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