当我使用 longClick 时,我想添加一个带有 2 个按钮编辑和删除的对话框(实际上只实现了删除)(标准单击打开项目详细信息)
所以我尝试按照此链接上的指南进行操作
我添加了
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.layout.edit_dialog, menu);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item
.getMenuInfo();
switch (item.getItemId()) {
case R.id.remove_item:
final String[] listItem = getItemId();
String idItemSel = listItem[info.position];
delItem(idItemSel);
adapter.notifyDataSetChanged();
return true;
}
return false;
}
(其中适配器是我的列表适配器)
我已经以这种方式配置了监听器
list.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
.....
}
});
list.setOnItemLongClickListener(new OnItemLongClickListener() {
public boolean onItemLongClick(AdapterView<?> parent, View view,
int position, long id) {
view.showContextMenu();
return true;
}
});
一切正常,但是当我使用长按时应用程序崩溃并出现此错误(调用时view.showContextMenu();
):
08-02 18:13:12.079: E/AndroidRuntime(7780): FATAL EXCEPTION: main
08-02 18:13:12.079: E/AndroidRuntime(7780): java.lang.StackOverflowError
08-02 18:13:12.079: E/AndroidRuntime(7780): at android.widget.AbsListView.showContextMenuForChild(AbsListView.java:1995)
08-02 18:13:12.079: E/AndroidRuntime(7780): at android.view.View.showContextMenu(View.java:2520)
08-02 18:13:12.079: E/AndroidRuntime(7780): at detailer.myapp.it.MyItems$6.onItemLongClick(MyItems.java:615)
08-02 18:13:12.079: E/AndroidRuntime(7780): at android.widget.AbsListView.showContextMenuForChild(AbsListView.java:2001)
08-02 18:13:12.079: E/AndroidRuntime(7780): at android.view.View.showContextMenu(View.java:2520)
08-02 18:13:12.079: E/AndroidRuntime(7780): at detailer.myapp.it.MyItems$6.onItemLongClick(MyItems.java:615)
08-02 18:13:12.079: E/AndroidRuntime(7780): at android.widget.AbsListView.showContextMenuForChild(AbsListView.java:2001)
08-02 18:13:12.079: E/AndroidRuntime(7780): at android.view.View.showContextMenu(View.java:2520)
08-02 18:13:12.079: E/AndroidRuntime(7780): at detailer.myapp.it.MyItems$6.onItemLongClick(MyItems.java:615)
08-02 18:13:12.079: E/AndroidRuntime(7780): at android.widget.AbsListView.showContextMenuForChild(AbsListView.java:2001)
08-02 18:13:12.079: E/AndroidRuntime(7780): at android.view.View.showContextMenu(View.java:2520)
08-02 18:13:12.079: E/AndroidRuntime(7780): at detailer.myapp.it.MyItems$6.onItemLongClick(MyItems.java:615)
08-02 18:13:12.079: E/AndroidRuntime(7780): at android.widget.AbsListView.showContextMenuForChild(AbsListView.java:2001)
08-02 18:13:12.079: E/AndroidRuntime(7780): at android.view.View.showContextMenu(View.java:2520)
08-02 18:13:12.079: E/AndroidRuntime(7780): at detailer.myapp.it.MyItems$6.onItemLongClick(MyItems.java:615)
08-02 18:13:12.079: E/AndroidRuntime(7780): at android.widget.AbsListView.showContextMenuForChild(AbsListView.java:2001)
08-02 18:13:12.079: E/AndroidRuntime(7780): at android.view.View.showContextMenu(View.java:2520)
08-02 18:13:12.079: E/AndroidRuntime(7780): at detailer.myapp.it.MyItems$6.onItemLongClick(MyItems.java:615)
08-02 18:13:12.079: E/AndroidRuntime(7780): at android.widget.AbsListView.showContextMenuForChild(AbsListView.java:2001)
08-02 18:13:12.079: E/AndroidRuntime(7780): at android.view.View.showContextMenu(View.java:2520)
08-02 18:13:12.079: E/AndroidRuntime(7780): at detailer.myapp.it.MyItems$6.onItemLongClick(MyItems.java:615)
08-02 18:13:12.079: E/AndroidRuntime(7780): at android.widget.AbsListView.showContextMenuForChild(AbsListView.java:2001)
08-02 18:13:12.079: E/AndroidRuntime(7780): at android.view.View.showContextMenu(View.java:2520)
08-02 18:13:12.079: E/AndroidRuntime(7780): at detailer.myapp.it.MyItems$6.onItemLongClick(MyItems.java:615)
08-02 18:13:12.079: E/AndroidRuntime(7780): at android.widget.AbsListView.showContextMenuForChild(AbsListView.java:2001)
08-02 18:13:12.079: E/AndroidRuntime(7780): at android.view.View.showContextMenu(View.java:2520)
08-02 18:13:12.079: E/AndroidRuntime(7780): at detailer.myapp.it.MyItems$6.onItemLongClick(MyItems.java:615)
08-02 18:13:12.079: E/AndroidRuntime(7780): at android.widget.AbsListView.showContextMenuForChild(AbsListView.java:2001)
08-02 18:13:12.079: E/AndroidRuntime(7780): at android.view.View.showContextMenu(View.java:2520)
08-02 18:13:12.079: E/AndroidRuntime(7780): at detailer.myapp.it.MyItems$6.onItemLongClick(MyItems.java:615)
08-02 18:13:12.079: E/AndroidRuntime(7780): at android.widget.AbsListView.showContextMenuForChild(AbsListView.java:2001)
08-02 18:13:12.079: E/AndroidRuntime(7780): at android.view.View.showContextMenu(View.java:2520)
08-02 18:13:12.079: E/AndroidRuntime(7780): at detailer.myapp.it.MyItems$6.onItemLongClick(MyItems.java:615)
08-02 18:13:12.079: E/AndroidRuntime(7780): at android.widget.AbsListView.showContextMenuForChild(AbsListView.java:2001)
08-02 18:13:12.079: E/AndroidRuntime(7780): at android.view.View.showContextMenu(View.java:2520)
08-02 18:13:12.079: E/AndroidRuntime(7780): at detailer.myapp.it.MyItems$6.onItemLongClick(MyItems.java:615)
08-02 18:13:12.079: E/AndroidRuntime(7780): at android.widget.AbsListView.showContextMenuForChild(AbsListView.java:2001)
08-02 18:13:12.079: E/AndroidRuntime(7780): at android.view.View.showContextMenu(View.java:2520)
08-02 18:13:12.079: E/AndroidRuntime(7780): at detailer.myapp.it.MyItems$6.onItemLongClick(MyItems.java:615)
08-02 18:13:12.079: E/AndroidRuntime(7780): at android.widget.AbsListView.showContextMenuForChild(AbsListView.java:2001)
08-02 18:13:12.079: E/AndroidRuntime(7780): at android.view.View.showContextMenu(View.java:2520)
08-02 18:13:12.079: E/AndroidRuntime(7780): at detailer.myapp.it.MyItems$6.onItemLongClick(MyItems.java:615)
08-02 18:13:12.079: E/AndroidRuntime(7780): at android.widget.AbsListView.showContextMenuForChild(AbsListView.java:2001)
08-02 18:13:12.079: E/AndroidRuntime(7780): at android.view.View.showContextMenu(View.java:2520)
08-02 18:13:12.079: E/AndroidRuntime(7780): at detailer.myapp.it.MyItems$6.onItemLongClick(MyItems.java:615)
08-02 18:13:12.079: E/AndroidRuntime(7780): at android.widget.AbsListView.showContextMenuForChild(AbsListView.java:2001)
08-02 18:13:12.079: E/AndroidRuntime(7780): at android.view.View.showContextMenu(View.java:2520)
08-02 18:13:12.079: E/AndroidRuntime(7780): at detailer.myapp.it.MyItems$6.onItemLongClick(MyItems.java:615)
08-02 18:13:12.079: E/AndroidRuntime(7780): at android.widget.AbsListView.showContextMenuForChild(AbsListView.java:2001)
08-02 18:13:12.079: E/AndroidRuntime(7780): at android.view.View.showContextMenu(View.java:2520)
08-02 18:13:12.079: E/AndroidRuntime(7780): at detailer.myapp.it.MyItems$6.onItemLongClick(MyItems.java:615)
08-02 18:13:12.079: E/AndroidRuntime(7780): at android.widget.AbsListView.showContextMenuForChild(AbsListView.java:2001)
08-02 18:13:12.079: E/AndroidRuntime(7780): at android.view.View.showContextMenu(View.java:2520)
08-02 18:13:12.079: E/AndroidRuntime(7780): at detailer.myapp.it.MyItems$6.onIt
当我长按列表项时,有任何解决问题的方法或查看简单上下文对话框的替代方法吗?