欢迎访问移动开发之家(rcyd.net),关注移动开发教程。移动开发之家  移动开发问答|  每日更新
页面位置 : > > > 内容正文

对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);
}

用户评论