ContextMenu onContextItemSelected getMenuInfo() null
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);
}
}
...............
} getMenuInfo() null
补充:移动开发 , Android