ContextMenu onContextItemSelected getMenuInfo() null

WUSHENGBING7918 2013-11-20 04:19:36
Actionbarsherlock中的listView使用ContextMenu实现长按功能时,在onContextItemSelected函数里调用item.getMenuInfo();得到一直为空值,而且在onCreateContextMenu函数里执行selectedMenuInfo = (AdapterContextMenuInfo) menuInfo;时得到的selectedMenuInfo也一直是空值,这是为什么,我的部分代码如下,求大神指教
public class AlarmManagerFragment extends SherlockFragment {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mActionBar = getSherlockActivity().getSupportActionBar();
view = View.inflate(mContext, R.layout.fragment_alarm_query, null);
findView();
registerForContextMenu(listView);
setListener();
initData();
return view;
}
/**
* 为listView注册ContextMenu
*/
@Override
public void registerForContextMenu(View view) {
super.registerForContextMenu(view);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
if (v.getId()==R.id.listView) {
selectedMenuInfo = (AdapterContextMenuInfo) menuInfo;
if (selectedMenuInfo == null) {
Log.e("selectedMenuInfo", "null");
}
Map<String, String> item1 = (Map<String, String>)listAdapter.getItem(selectedMenuInfo.position);
android.view.MenuInflater inflater = getSherlockActivity().getMenuInflater();
inflater.inflate(R.menu.menu_list,menu);
}
}

@Override
public boolean onContextItemSelected(android.view.MenuItem item) {
AdapterView.AdapterContextMenuInfo menuInfo = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
if(menuInfo == null){
menuInfo = selectedMenuInfo;
}
Log.e("onContextItemSelected-alarmid", alarmid);
Map<String, String> item1 = (Map<String, String>)listAdapter.getItem(menuInfo.position);
switch(item.getItemId()) {
case R.id.confirm:
Log.e("aaaaa", "confirm");
return true;
case R.id.cancel:
Log.e("aaaaa", "cancel");
return true;
case R.id.delete:
Log.e("aaaaa", "delete");
return true;
default:
return super.onContextItemSelected(item);
}

}
...............
}
...全文
199 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
GilbertT 2016-03-16
  • 打赏
  • 举报
回复
楼上正解,onItemLongClick是指view对应的adapter的长按事件,绝对不能返回true。感谢楼上给我提示。
tgj1202 2016-03-10
  • 打赏
  • 举报
回复
看看onItemLongClick中返回值是true还是false,如果是true,改成false

80,492

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧