我正在尝试设置ContextMenu
项目不可见(item.setVisible(false)
),因为它已经显示(在onCreateContextMenu()
期间作为成员保存对菜单的引用)。
在2.3上这样做我得到例外:
01-17 09:54:42.563: E/AndroidRuntime(2494): java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modified from a background thread, but only from the UI thread. [in ListView(16908823, class com.android.internal.app.AlertController$RecycleListView) with Adapter(class com.android.internal.view.menu.MenuBuilder$MenuAdapter)]
我的所有代码当然都是在UI线程中运行的。
我想2.3中的ContextMenu
是使用ListView
实现的,并且由相应的`ListAdapterv进行了黑化。
在ICS中,不会抛出此异常,并且该项目在我计划中变得不可见。
任何人都有想法如何在2.3上做到这一点?
一种解决方法是不通过ContextMenu
模仿Dialog
,但我宁愿坚持ContextMenu
答案 0 :(得分:0)
您可以尝试通过以下方式获取菜单适配器:
public boolean onContextItemSelected(MenuItem item){ AdapterView.AdapterContextMenuInfo info =(AdapterView.AdapterContextMenuInfo)item.getMenuInfo();
// ...做点什么
adapter.notifyDataSetChanged();
}
return super.onContextItemSelected(item);
}