今天在使用的过程中发现,当我们需要获取ContextMenuInfo并取得一些列表项(list Item)信息,当菜单为子菜单的时候,调用item.getMenuInfo()返回空值null。为了解决这个问题,我们来讲解一下对Android子菜单ContextMenuInfo返回空值的处理方法。
在列表页面(ListView)的弹出菜单中,有的时候我们需要用到子菜单,今天在使用的过程中发现,当我们需要获取ContextMenuInfo并取得一些列表项(list Item)信息,当菜单为子菜单的时候,调用item.getMenuInfo()返回空值null。如下所示:
02 |
public void onCreateContextMenu(ContextMenu menu, View v, |
03 |
ContextMenuInfo menuInfo) { |
04 |
menu.setHeaderTitle( "操作" ); |
05 |
menu.add( 0 , VIEW_ID, 0 , "查看全文" ); |
06 |
menu.add( 0 , DELETE_ID, 0 , "删除" ); |
07 |
SubMenu submenu = menu.addSubMenu( 1 ,SHARE, 0 , "分享" ); |
08 |
submenu.add( 2 ,SHARE1, 0 , "短信分享" ); |
09 |
submenu.add( 2 ,SHARE2, 0 , "Gmail分享" ); |
10 |
super .onCreateContextMenu(menu, v, menuInfo); |
14 |
public boolean onContextItemSelected(MenuItem item) { |
15 |
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); |
16 |
RSSItem rssItem = (RSSItem) getListAdapter().getItem(info.position); |
查了很多资料发现,这可能是目前存在的一个bug,那么怎么解决这个问题呢?
我们可以通过一个成员变量来保存列表项(listView's Items)子菜单的MenuInfo。解决方法如下所示:
【编辑推荐】
- Android开发:实现popupwindow中显示listview
- Android开发:实现带图片和checkbox的listview
- Android触屏textview及listview对比验证
- Android ListView复杂使用方式简单理解