如何使此DELETE sql命令正常工作?

时间:2019-05-16 14:51:33

标签: java android android-sqlite

我对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'

查看图片

list overview

when clicked an item

0 个答案:

没有答案