2017-08-03 78 views
0

我是一名初学者,因此请耐心等待我。我在我的列表视图中添加了一个上下文菜单,以显示删除选项,该选项应该在选中时删除其子列表视图。但是,在尝试处理此删除事件时出现错误。我究竟做错了什么?错误处理上下文菜单中的点击事件

这是我的主要活动:

// handling context menu clicks 
     @Override 
     public boolean onContextItemSelected(MenuItem item) { 
      switch (item.getItemId()) { 
       case R.id.edit: 
        break; 
       case R.id.delete: 
       noteactivity.actionDelete(); 
      } 
      return super.onContextItemSelected(item); 
     } 

这是我NoteActivity其中删除方法是从调用。

NoteActivity noteactivity; 
    public void actionDelete() { 
      //ask user if he really wants to delete the note! 
      AlertDialog.Builder dialogDelete = new AlertDialog.Builder(this) 
        .setTitle("delete note") 
        .setMessage("really delete the note?") 
        .setPositiveButton("YES", new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(DialogInterface dialog, int which) { 
          if(mLoadedNote != null && Utilities.deleteFile(getApplicationContext(), mFileName)) { 
           Toast.makeText(NoteActivity.this, mLoadedNote.getTitle() + " is deleted" 
             , Toast.LENGTH_SHORT).show(); 
          } else { 
           Toast.makeText(NoteActivity.this, "can not delete the note '" + mLoadedNote.getTitle() + "'" 
             , Toast.LENGTH_SHORT).show(); 
          } 
          finish(); 
         } 
        }) 
        .setNegativeButton("NO", null); //do nothing on clicking NO button :P 

      dialogDelete.show(); 
     } 

I get this error (Null pointer exception) 

me: FATAL EXCEPTION: main 
                     Process: com.app.ben.notetaker, PID: 27059 
                     java.lang.NullPointerException: Attempt to invoke virtual method 'void com.app.ben.notetaker.NoteActivity.actionDelete()' on a null object reference 
                      at com.app.ben.notetaker.MainActivity.onContextItemSelected(MainActivity.java:87) 
                      at android.app.Activity.onMenuItemSelected(Activity.java:3224) 
                      at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:408) 
                      at android.support.v7.app.AppCompatActivity.onMenuItemSelected(AppCompatActivity.java:195) 
                      at android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:113) 
                      at android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:113) 
                      at com.android.internal.policy.PhoneWindow$PhoneWindowMenuCallback.onMenuItemSelected(PhoneWindow.java:3663) 
                      at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:761) 
                      at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:152) 
                      at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:904) 
                      at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:894) 
                      at com.android.internal.view.menu.MenuPopup.onItemClick(MenuPopup.java:128) 
                      at android.widget.AdapterView.performItemClick(AdapterView.java:310) 
                      at android.widget.AbsListView.performItemClick(AbsListView.java:1156) 
                      at android.widget.AbsListView$PerformClick.run(AbsListView.java:3121) 
                      at android.widget.AbsListView.onTouchUp(AbsListView.java:4048) 
                      at android.widget.AbsListView.onTouchEvent(AbsListView.java:3807) 
                      at android.widget.DropDownListView.onTouchEvent(DropDownListView.java:116) 
                      at android.view.View.dispatchTouchEvent(View.java:10023) 

回答

0

看起来你参考

noteactivity

为空。您需要拨打电话

actionDelete() 

自。

+0

对不起你的bug,但你能更具体吗?我需要警报dilog出现在主要活动环境 – benruty

+0

没问题。我不知道如何更具体。您必须初始化新的NoteActivity或将引用传递给一个。目前,你在你的noteactivity引用上得到一个空指针。 – anomeric

相关问题