在onContextItemSelected方法中,item.getMenuInfo得到null ?

在我的一个项目中,使用了PullToRefresh的开源项目的下拉刷新的ListView。
现在,我想在该ListView中使用一个上下文菜单,并且得到触发菜单的Item的Position,用以进行各种处理。
1、在Activity的onCreate()方法里注册了我的ListView

registerForContextMenu(mPTRlistview);

2、Activity中覆写onCreateContextMenu

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo info) {
    super.onCreateContextMenu(menu, v, info);
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu_context,menu);
    }

3、Activity中覆写onContextItemSelected

    @Override
public boolean onContextItemSelected(MenuItem item) {

    AdapterView.AdapterContextMenuInfo menuInfo = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
    int position = menuInfo.position;
    。。。
    。。。

结果是menuInfo.position是会产生空指针异常的。
各种找寻结果,可猜测是PullToRefersh自己定制的ListView没有覆写getContextMenuInfo
一个view要想能够生成自己的MenuInfo,必须要重新getContextMenuInfo这个函数。

public class PullToRefreshListView extends PullToRefreshAdapterViewBase

public abstract class PullToRefreshAdapterViewBase extends PullToRefreshBase implements OnScrollListener

然后在AbsListView里面有

@Override
protected ContextMenuInfo getContextMenuInfo() {
    return mContextMenuInfo;
}

现在我不知道如何解决这个item.getMenuInfo返回NULL的问题了,有了解这方面的大哥指点一二吧~

阅读 8k
1 个回答
新手上路,请多包涵

registerForContextMenu(mPTRlistview)这里错误啦,需要使用listview,而mPTRlistview不是listview。需要使用mPTRlistview.getRefreshableView();

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题