对android子菜单(SubMenu)的ContextMenuInfo返回空值的处理方法,
投稿于 被查看 1319 次 评论:18
对android子菜单(SubMenu)的ContextMenuInfo返回空值的处理方法,
在列表页面(ListView)的弹出菜单中,有的时候我们需要用到子菜单,今天在使用的过程中发现,当我们需要获取ContextMenuInfo并取 得一些列表项(list Item)信息,当菜单为子菜单的时候,调用item.getMenuInfo()返回空值null。如下所示:1.[Java]代码
@Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { menu.setHeaderTitle("操作"); menu.add(0, VIEW_ID, 0, "查看全文"); menu.add(0, DELETE_ID, 0, "删除"); SubMenu submenu = menu.addSubMenu(1,SHARE,0,"分享"); submenu.add(2,SHARE1,0,"短信分享"); submenu.add(2,SHARE2,0,"Gmail分享"); super.onCreateContextMenu(menu, v, menuInfo); } @Override public boolean onContextItemSelected(MenuItem item) { AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); RSSItem rssItem = (RSSItem) getListAdapter().getItem(info.position); }
2.解决办法
private AdapterContextMenuInfo selectedMenuInfo = null; @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { menu.setHeaderTitle("操作"); menu.add(0, VIEW_ID, 0, "查看全文"); menu.add(0, DELETE_ID, 0, "删除"); SubMenu submenu = menu.addSubMenu(1,SHARE,0,"分享"); submenu.add(2,SHARE1,0,"短信分享"); submenu.add(2,SHARE2,0,"Gmail分享"); selectedMenuInfo = (AdapterContextMenuInfo) menuInfo; super.onCreateContextMenu(menu, v, menuInfo); } @Override public boolean onContextItemSelected(MenuItem item) { AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); if(info == null){ info = selectedMenuInfo; } RSSItem rssItem = (RSSItem) getListAdapter().getItem(info.position); }
用户评论