2012-12-26 192 views
0

这可能很简单,但会出现错误,请帮助我。我有列表视图,并在每一行我有按钮,当我点击按钮,它应该采取该特定行的标题,并将其插入到数据库中。当我上的按钮,它实际上给我的标题点击,但我有插入的所有权属于database.In的LazyAdapter类的问题,我有下面的代码插入数据库错误

 Button play = (Button)vi.findViewById(R.id.imageArrow); 
    play.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      System.out.println("play clicked!"); 
      String pgm_title = title.getText().toString(); 
      System.out.println("item selected: "+ pgm_title); 

      CustomizedListView cust = new CustomizedListView(); 
      cust.InsertPlayItem(pgm_title); 
     } 
    }); 

,并在主活动我有这样的代码。这段代码有什么问题?

 public void InsertPlayItem(String pgm_title) { 
    // TODO Auto-generated method stub 
    DatabaseHandler db = new DatabaseHandler(getBaseContext());//getting error here 
    db.insertPlayList(pgm_title); 
} 

得到如下错误:

12-26 16:03:00.751: W/dalvikvm(5861): threadid=1: thread exiting with uncaught exception (group=0x40015560) 
12-26 16:03:00.772: E/AndroidRuntime(5861): FATAL EXCEPTION: main 
12-26 16:03:00.772: E/AndroidRuntime(5861): java.lang.NullPointerException 
12-26 16:03:00.772: E/AndroidRuntime(5861):  at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:118) 
12-26 16:03:00.772: E/AndroidRuntime(5861):  at com.example.devices.DatabaseHandler.insertPlayList(DatabaseHandler.java:422) 
12-26 16:03:00.772: E/AndroidRuntime(5861):  at com.example.programs.CustomizedListView.InsertPlayItem(CustomizedListView.java:137) 
12-26 16:03:00.772: E/AndroidRuntime(5861):  at com.example.programs.LazyAdapter$1.onClick(LazyAdapter.java:131) 
12-26 16:03:00.772: E/AndroidRuntime(5861):  at android.view.View.performClick(View.java:2485) 
12-26 16:03:00.772: E/AndroidRuntime(5861):  at android.view.View$PerformClick.run(View.java:9080) 
12-26 16:03:00.772: E/AndroidRuntime(5861):  at android.os.Handler.handleCallback(Handler.java:587) 
12-26 16:03:00.772: E/AndroidRuntime(5861):  at android.os.Handler.dispatchMessage(Handler.java:92) 
12-26 16:03:00.772: E/AndroidRuntime(5861):  at android.os.Looper.loop(Looper.java:123) 
12-26 16:03:00.772: E/AndroidRuntime(5861):  at android.app.ActivityThread.main(ActivityThread.java:3683) 
12-26 16:03:00.772: E/AndroidRuntime(5861):  at java.lang.reflect.Method.invokeNative(Native Method) 
12-26 16:03:00.772: E/AndroidRuntime(5861):  at java.lang.reflect.Method.invoke(Method.java:507) 
12-26 16:03:00.772: E/AndroidRuntime(5861):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
12-26 16:03:00.772: E/AndroidRuntime(5861):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
12-26 16:03:00.772: E/AndroidRuntime(5861):  at dalvik.system.NativeStart.main(Native Method) 

我的数据库部分:

  public void insertPlayList(String playname) { 
     SQLiteDatabase db = this.getWritableDatabase(); 

     ContentValues values = new ContentValues(); 
     values.put(play_list, playname); 
     // Inserting Row 
     db.insert(Personalize, null, values); 
     db.close(); // Closing database connection 
    } 
+0

请指出您遇到的问题。调用db.insertPlayList(pgm_title)后会发生什么;方法? –

+0

@ShreyaShah请参阅编辑 –

+0

尝试使用Activityname.this来代替getbasecontext();可能是你可以解决这个问题。另外在这里发布错误。 – Google

回答

1

最后我得到..在LazyAdapter类唯一我不喜欢这样。

 Button play = (Button)vi.findViewById(R.id.imageArrow); 
    play.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      System.out.println("play clicked!"); 
      String pgm_title = title.getText().toString(); 
      System.out.println("item selected: "+ pgm_title); 
      DatabaseHandler db = new DatabaseHandler(activity); 
      db.insertPlayList(pgm_title); 
         } 
     }