当前位置:编程学习 > wap >>

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
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,