我目前正在尝试制作上下文菜单。我希望上下文菜单从生成菜单的视图中捕获文本。这是我正在使用的代码:
@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中的TextView调用了此方法
谢谢!
最佳答案
android始终将参数menuInfo
传递为null,这可能是因为您应该调用解释了here的某个registerForContextMenu()
方法