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)
對不起你的bug,但你能更具體嗎?我需要警報dilog出現在主要活動環境 – benruty
沒問題。我不知道如何更具體。您必須初始化新的NoteActivity或將引用傳遞給一個。目前,你在你的noteactivity引用上得到一個空指針。 – anomeric