我的代碼有一些麻煩。 在listView中,當我長按一個ContextMenu時顯示。顯示刪除文件的選項。 但是,當我在ContextMenu中按下刪除應用程序強制關閉。Android Listview時長按一個ContextMenu顯示刪除文件選項
任何想法? 由於事先
這是我的代碼
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
public boolean onItemLongClick(AdapterView<?> arg0, View v,
int index, long arg3) {
registerForContextMenu(listView);
return false;
}
});
}
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
menu.setHeaderTitle("Options");
menu.add(0, v.getId(), 0, "Change Name");
menu.add(0, v.getId(), 0, "Delete");
}
@Override
public boolean onContextItemSelected(MenuItem item) {
if(item.getTitle()=="Change Name"){function1(item.getActionView(), item.getItemId());}
else if(item.getTitle()=="Delete"){function2(item.getActionView(), item.getItemId());}
else {return false;}
return true;
}
public void function1(View view, int id){
//Change Name Code
}
public void function2(View view, int id){
String product = ((TextView)view).getText().toString();
File dir = getFilesDir();
File file = new File(dir, (product));
boolean deleted = file.delete();
Toast.makeText(ShowListActivity.this, R.string.deleted, Toast.LENGTH_SHORT).show();
}
這是我的logcat
10-17 19:10:32.621:E/InputEventReceiver(25683):異常分派 輸入事件。 10-17 19:10:32.621:E/MessageQueue-JNI(25683):異常 MessageQueue回調:handleReceiveCallback 10-17 19:10:32.641: E/MessageQueue-JNI(25683):java.lang.NullPointerException 10 -17 19:10:32.641:E/MessageQueue-JNI(25683):at tbj.android.basketballstatistics.ShowListActivity.function2(ShowListActivity.java:92) 10-17 19:10:32.641:E/MessageQueue- JNI(25683):at tbj.android.basketballstatistics.ShowListActivity.onContextItemSelected(ShowListActivity.java:79) 10-17 19:10:32.641:E/MessageQueue-JNI(25683):at android.app.Activity。 onMenuItemSelected(Activity.java:2620)10-17 19:10:32.641:E/MessageQueue-JNI(25683):at com.android.internal.policy.impl.PhoneWindow $ DialogMe nuCallback.onMenuItemSelected(PhoneWindow.java:4129) 10-17 19:10:32.641:E/MessageQueue-JNI(25683):at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:741 ) 10-17 19:10:32.641:E/MessageQueue-JNI(25683):at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:152) 10-17 19:10: 32.641:E/MessageQueue-JNI(25683):at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:884) 10-17 19:10:32.641:E/MessageQueue-JNI(25683) ):at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:874) 10-17 19:10:32.641:E/MessageQueue-JNI(25683):at com.android.internal .view.menu.MenuDialogHelper .onClick(MenuDialogHelper.java:167) 10-17 19:10:32.641:E/MessageQueue-JNI(25683):at com.android.internal.app.AlertController $ AlertParams $ 3.onItemClick(AlertController.java:941 ) 10-17 19:10:32.641:E/MessageQueue-JNI(25683):at android.widget.AdapterView.performItemClick(AdapterView.java:298) 10-17 19:10:32.641:E/MessageQueue- JNI(25683):at android.widget.AbsListView.performItemClick(AbsListView.java:1113) 10-17 19:10:32.641:E/MessageQueue-JNI(25683):at android.widget.AbsListView $ PerformClick。運行(AbsListView.java:2911) 10-17 19:10:32.641:E/MessageQueue-JNI(25683):at android.widget.AbsListView.onTouchUp(AbsListView.java:3657)10-17 19: 10:32.641:E/MessageQueue-JNI(25683):at android.widget.AbsListView.onTouchEvent(AbsListView.java:3436)10-17 19:10:32.641:E/MessageQueue-JNI(25683):at android.view.View.Group.dispatchTransformedTouchEvent(ViewGroup.java:2210) 10-17 19:10:32.641:E/MessageQueue-JNI(25683):at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1945)10-17 19:10:32。641:E/MessageQueue-JNI(25683):at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216) 10-17 19:10:32.641:E/MessageQueue-JNI(25683):at android。 view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)10-17 19:10:32.641:E/MessageQueue-JNI(25683):at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216) 10- 17:19:10:32.641:E/MessageQueue-JNI(25683):at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)10-17 19:10:32.641:E/MessageQueue-JNI(25683) :at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216) 10-17 19:10:32.641:E/MessageQueue-JNI(25683):at android.view.Vi ewGroup.dispatchTouchEvent(ViewGroup.java:1959)10-17 19:10:32.641:E/MessageQueue-JNI(25683):at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216) 10-17 19 :10:32.641:E/MessageQueue-JNI(25683):at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)10-17 19:10:32.641:E/MessageQueue-JNI(25683):at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216) 10-17 19:10:32.641:E/MessageQueue-JNI(25683):at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959) 10-17 19:10:32.641:E/MessageQueue-JNI(25683):at com.android.internal.policy.impl.PhoneWindow $ DecorView.superDispatchTouchEvent(PhoneWindow.java:2329) 10-17 19:10:32.641:E/MessageQueue-JNI(25683):at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1568) 10-17 19:10:32.641 :E/MessageQueue-JNI(25683):at android.app.Dialog.dispatchTouchEvent(Dialog.java:746)10-17 19:10:32.641:E/MessageQueue-JNI(25683):at com.android .internal.policy.impl.PhoneWindow $ DecorView.dispatchTouchEvent(PhoneWindow.java:2277) 10-17 19:10:32.641:E/MessageQueue-JNI(25683):at android.view.View.dispatchPointerEvent(View。 java:7893)10-17 19:10:32.641:E/MessageQueue-JNI(25683):at android.view.ViewRootImpl $ ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:3950) 10-17 19:10:3 2.641:E/MessageQueue-JNI(25683):at android.view.ViewRootImpl $ ViewPostImeInputStage.onProcess(ViewRootImpl.java:3829) 10-17 19:10:32.641:E/MessageQueue-JNI(25683):at android.view.ViewRootImpl $ InputStage.deliver(ViewRootImpl.java:3395) 10-17 19:10:32.641:E/MessageQueue-JNI(25683):at android.view.ViewRootImpl $ InputStage.onDeliverToNext(ViewRootImpl.java :3445) 10-17 19:10:32.641:E/MessageQueue-JNI(25683):at android.view.ViewRootImpl $ InputStage.forward(ViewRootImpl.java:3414) 10-17 19:10:32.641: E/MessageQueue-JNI(25683):at android.view.ViewRootImpl $ AsyncInputStage.forward(ViewRootImpl.java:3521) 10-17 19:10:32.641:E/MessageQueue-JNI(25683):at android.view.ViewRootImpl $ InputStage.apply(ViewRootImpl.java:3422) 10-17 19:10:32.641:E/MessageQueue-JNI(25683):at android.view.ViewRootImpl $ AsyncInputStage.apply(ViewRootImpl。 java:3578) 10-17 19:10:32.641:E/MessageQueue-JNI(25683):at android.view.ViewRootImpl $ InputStage.deliver(ViewRootImpl.java:3395) 10-17 19:10:32.641 :E/MessageQueue-JNI(25683):at android.view.ViewRootImpl $ InputStage.onDeliverToNext(ViewRootImpl.java:3445) 10-17 19:10:32.641:E/MessageQueue-JNI(25683):at android .view.ViewRootImpl $ InputStage.forward(ViewRootImpl.java:3414) 10-17 19:10:32.641:E/MessageQueue-JNI(25683):at android.view.ViewRootImpl $ InputStage.apply(ViewRootImpl。java:3422) 10-17 19:10:32.641:E/MessageQueue-JNI(25683):at android.view.ViewRootImpl $ InputStage.deliver(ViewRootImpl.java:3395) 10-17 19:10:32.641 :E/MessageQueue-JNI(25683):at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5535) 10-17 19:10:32.641:E/MessageQueue-JNI(25683):at android.view .ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5515) 10-17 19:10:32.641:E/MessageQueue-JNI(25683):at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5486) 10-17 19:10:32.641:E/MessageQueue-JNI(25683):at android.view.ViewRootImpl $ WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:5615) 10-17 19:10:32.641:E/M essageQueue-JNI(25683):at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185) 10-17 19:10:32.641:E/MessageQueue-JNI(25683):at android.os.MessageQueue。 nativePollO 10-17 19:10:32.641: D/AndroidRuntime(25683):關閉VM 10-17 19:10:32.641: W/dalvikvm(25683):threadid = 1:線程退出時未捕獲異常 (group = 0x41642db8)10-17 19:10:32.641:E/AndroidRuntime(25683):致命 EXCEPTION:main 10-17 19:10:32.641:E/AndroidRuntime(25683):進程: tbj.android.basketballstatistics,PID :25683 10-17 19:10:32.641: E/AndroidRuntime(25683):java.lang.NullPointerException 10-17 19:10:32.641:E/AndroidRuntime(25683):at tbj.android.basketballstatistics.ShowListActivity.function2(ShowListActivity.java:92) 10-17 19:10:32.641:E/AndroidRuntime(25683):at tbj.android.basketballstatistics.ShowListActivity.onContextItemSelected(ShowListActivity.java: 79) 10-17 19:10:32.641:E/AndroidRuntime(25683):at android.app.Activity.onMenuItemSelected(Activity.java:2620)10-17 19:10:32.641:E/AndroidRuntime(25683) ):at com.android.internal.policy.impl.PhoneWindow $ DialogMenuCallback.onMenuItemSelected(PhoneWindow.java:4129) 10-17 19:10:32.641:E/AndroidRuntime(25683):at com.android.internal .view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:741) 10-17 19:10:32.641:E/AndroidRuntime(25683):at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:152) 10-17 19:10:32.641:E/AndroidRuntime(25683):at com.android.internal.view.menu。 MenuBuilder.performItemAction(MenuBuilder.java:884) 10-17 19:10:32.641:E/AndroidRuntime(25683):at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:874) 10-17 19:10:32.641:E/AndroidRuntime(25683):at com.android.internal.view.menu.MenuDialogHelper.onClick(MenuDialogHelper.java:167) 10-17 19:10:32.641:E/AndroidRuntime(25683):at com.android.internal.app.AlertController $ AlertParams $ 3.onItemClick(AlertController.java:941) 10-17 19:10:32.641:E/AndroidRuntime(25683):at android.widget .Ada pterView.performItemClick(AdapterView.java:298) 10-17 19:10:32.641:E/AndroidRuntime(25683):at android.widget.AbsListView.performItemClick(AbsListView.java:1113) 10-17 19:10 :32.641:E/AndroidRuntime(25683):at android.widget.AbsListView $ PerformClick.run(AbsListView.java:2911) 10-17 19:10:32.641:E/AndroidRuntime(25683):at android.widget .AbsListView.onTouchUp(AbsListView.java:3657)10-17 19:10:32.641:E/AndroidRuntime(25683):at android.widget.AbsListView.onTouchEvent(AbsListView.java:3436)10-17 19: 10:32.641:E/AndroidRuntime(25683):在 android.view.View.dispatchTouchEvent(View.java:7713)10-17 19:10:32。641:E/AndroidRuntime(25683):在 android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2210) 10-17 19:10:32.641:E/AndroidRuntime(25683):at android.view.ViewGroup。 dispatchTouchEvent(ViewGroup.java:1945)10-17 19:10:32.641:E/AndroidRuntime(25683):at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216) 10-17 19:10:32.641 :E/AndroidRuntime(25683):at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)10-17 19:10:32.641:E/AndroidRuntime(25683):at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:2216) 10-17 19:10:32.641:E/AndroidRuntime(25683):at android.view.ViewGroup.disp atchTouchEvent(ViewGroup.java:1959)10-17 19:10:32.641:E/AndroidRuntime(25683):at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216) 10-17 19:10:32.641 :E/AndroidRuntime(25683):at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)10-17 19:10:32.641:E/AndroidRuntime(25683):at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:2216) 10-17 19:10:32.641:E/AndroidRuntime(25683):at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)10-17 19:10:32.641: E/AndroidRuntime(25683):at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216) 10-17 19:10:32.641:E/An droidRuntime(25683):at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)10-17 19:10:32.641:E/AndroidRuntime(25683):at com.android.internal.policy.impl。 PhoneWindow $ DecorView.superDispatchTouchEvent(PhoneWindow.java:2329) 10-17 19:10:32.641:E/AndroidRuntime(25683):at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1568 ) 10-17 19:10:32.641:E/AndroidRuntime(25683):at android.app.Dialog.dispatchTouchEvent(Dialog.java:746)10-17 19:10:32.641:E/AndroidRuntime(25683) :at com.android.internal.policy.impl.PhoneWindow $ DecorView.dispatchTouchEvent(PhoneWindow.java:2277) 10-17 19:10:32.641:E/AndroidRuntime(25683):at(ViewRootImpl.java:3950)android.view.ViewRootImpl $ ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:3950)1017 19:10:32.641:E/AndroidRuntime(25683):at android.view.ViewRootImpl $ ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:3950) 10-17 19:10:32.641:E/AndroidRuntime(25683):at android.view.ViewRootImpl $ ViewPostImeInputStage.onProcess(ViewRootImpl.java:3829) 10-17 19:10:32.641:E/AndroidRuntime(25683) ):at android.view.ViewRootImpl $ InputStage.deliver(ViewRootImpl.java:3395) 10-17 19:10:32.641:E/AndroidRuntime(25683):at android.view.ViewRootImpl $ InputStage.onDeliverToNext(ViewRootImpl .java:3445) 10-17 19:10:32.641:E/AndroidRuntime(25683):at android.view.ViewRootImpl $ InputStage.for病房(ViewRootImpl.java:3414) 10-17 19:10:32.641:E/AndroidRuntime(25683):at android.view.ViewRootImpl $ AsyncInputStage.forward(ViewRootImpl.java:3521) 10-17 19:10 :32.641:E/AndroidRuntime(25683):at android.view.ViewRootImpl $ InputStage.apply(ViewRootImpl.java:3422) 10-17 19:10:32.641:E/AndroidRuntime(25683):at android.view .ViewRootImpl $ AsyncInputStage.apply(ViewRootImpl.java:3578) 10-17 19:10:32.641:E/AndroidRuntime(25683):at android.view.ViewRootImpl $ InputStage.deliver(ViewRootImpl.java:3395) 10 -17 19:10:32.641:E/AndroidRuntime(25683):at android.view.ViewRootImpl $ InputStage.onDeliverToNext(ViewRootImpl.java:3445) 10-17 19:10:32。android.view.ViewRootImpl $ InputStage.forward(ViewRootImpl.java:3414) 10-17 19:10:32.641:E/AndroidRuntime(25683):at android.view。 (ViewRootImpl.java:3422) 10-17 19:10:32.641:E/17 19:10:32.641:E/AndroidRuntime(25683):at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5535) 10-17 19:10:32.641:E/AndroidRuntime(25683):at android .view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5515) 10-17 19:10:32.641:E/AndroidRuntime(25683):at android.view.ViewRootImpl.enque ueInputEvent(ViewRootImpl.java:5486) 10-17 19:10:32.641:E/AndroidRuntime(25683):at android.view.ViewRootImpl $ WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:5615) 10-17 19:10 :32.641:E/AndroidRuntime(25683):在 android.view.InputEventReceiver.dispatchInput
你能顯示日誌輸出,所以我們可以有一個更好的想法的錯誤? – j2emanue 2014-10-17 17:01:58
@ j2emanue我的logcat現在可用 – Thor1401 2014-10-17 17:12:42
在執行function2時出現NullPointerException,因此請在此函數上使用調試。你是否獲得了textview的參考?在列表視圖上使用OnItemLongClickListener獲取產品名稱。 – 2014-10-17 17:37:57