我对ListView项目的onclick侦听器进行了某种设计。单击listview项时,我将获得list_id(这是一个称为postId的字符串),我需要从数据库中删除帖子(或更准确地说是该行)。
但是,当我单击删除图标时,出现了问题。该应用程序崩溃,并且没有任何内容被删除。
我该如何解决?
singlemomentactivity.java
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.header_items, menu);
return true;
}
// Onclick listener for the "delete" and "edit" icons
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
// What to do when delete icon is pressed
case R.id.delete_menu:
myDb.deleteData(postId);
return false;
// What to do when edit icon is pressed
case R.id.edit_menu:
myDb.deleteData(postId);
return false;
default:
super.onOptionsItemSelected(item);
return true;
}
}
DatabaseHelper.java
public Integer deleteData(String id) {
SQLiteDatabase db = this.getWritableDatabase();
return db.delete(TABLE_NAME, "trip_id = ?", new String[] {id});
}
调试器显示
D/location: Rotterdam
D/title: Pizza
D/description: Eating...
W/ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy@b73e52e
D/EGL_emulation: eglMakeCurrent: 0xe7c71920: ver 3 0 (tinfo 0xe7c6cca0)
D/EGL_emulation: eglMakeCurrent: 0xe7c71920: ver 3 0 (tinfo 0xe7c6cca0)
D/EGL_emulation: eglMakeCurrent: 0xe7c71920: ver 3 0 (tinfo 0xe7c6cca0)
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.triptracker, PID: 32562
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Integer com.example.triptracker.DatabaseHelper.deleteData(java.lang.String)' on a null object reference
at com.example.triptracker.singlemomentactivity.onOptionsItemSelected(singlemomentactivity.java:96)
at android.app.Activity.onMenuItemSelected(Activity.java:3543)
at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:436)
at android.support.v7.app.AppCompatActivity.onMenuItemSelected(AppCompatActivity.java:196)
at android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:109)
at android.support.v7.app.AppCompatDelegateImpl.onMenuItemSelected(AppCompatDelegateImpl.java:888)
at android.support.v7.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:840)
at android.support.v7.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:158)
at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:991)
at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:981)
at android.support.v7.widget.ActionMenuView.invokeItem(ActionMenuView.java:625)
at android.support.v7.view.menu.ActionMenuItemView.onClick(ActionMenuItemView.java:151)
at android.view.View.performClick(View.java:6597)
at android.view.View.performClickInternal(View.java:6574)
at android.view.View.access$3100(View.java:778)
at android.view.View$PerformClick.run(View.java:25885)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
I/Process: Sending signal. PID: 32562 SIG: 9
Disconnected from the target VM, address: 'localhost:8600', transport: 'socket'
查看图片