我目前正在尝试制作上下文菜单。我希望上下文菜单从生成菜单的视图中捕获文本。这是我正在使用的代码:

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
    AdapterView.AdapterContextMenuInfo info =
            (AdapterView.AdapterContextMenuInfo) menuInfo;
    selectedOption = ((TextView) info.targetView).getText().toString();
    menu.setHeaderTitle(selectedOption);
}


执行应用程序时,出现以下错误:

Caused by: java.lang.NullPointerException: Attempt to read from field 'android.view.View android.widget.AdapterView$AdapterContextMenuInfo.targetView' on a null object reference
        at com.conversions.rolando.conversions.MainActivity.onCreateContextMenu(MainActivity.java:172)


...它指向:selectedOption = ((TextView) info.targetView).getText().toString();

因此错误基本上意味着“ info”为空,因为“ menuInfo”也为空?我已尝试通过阅读以下内容来了解​​原因:What is a NullPointerException, and how do I fix it?,但似乎找不到解决方案,也无法理解问题。

这就是我呼叫registerForContextMenu()的方式:

public void onButtonClickEvent(View sender)
    {
        registerForContextMenu(sender);
        openContextMenu(sender);
        unregisterForContextMenu(sender);
    }


我的main.xml中的T​​extView调用了此方法

谢谢!

最佳答案

android始终将参数menuInfo传递为null,这可能是因为您应该调用解释了here的某个registerForContextMenu()方法

09-25 17:42