展会信息港展会大全

对android子菜单(SubMenu)的ContextMenuInfo返回空值的处理方法
来源:互联网   发布日期:2015-10-13 07:36:40   浏览:2249次  

导读:在列表页面(ListView)的弹出菜单中,有的时候我们需要用到子菜单,今天在使用的过程中发现,当我们需要获取ContextMenuInfo并取 得一些列表项(list Item)信息,当菜单为子菜单的时候,调用item.getMenuInfo(......

在列表页面(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);

}

赞助本站

人工智能实验室
AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港