2017-08-03 74 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

相關問題