registerForContextMenu 在向视图传递menu_item时引发空指针异常



当我单击菜单项时,我想生成一个带有选项供用户选择的context menu。 但它的投掷null pointer exception.

#menu_main.xml #

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.bremachitra.mynotepad.MainActivity">
<item
android:id="@+id/action_view"
android:title="View"
app:actionViewClass="android.widget.ImageButton" />
</menu>

主要活动.java

if(id == R.id.action_view)
{ 
ImageButton viewButton = (ImageButton) findViewById(R.id.action_view);
registerForContextMenu(viewButton);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
Toast.makeText(this,"context",Toast.LENGTH_SHORT).show();
getMenuInflater().inflate(R.menu.menu_view,menu);
}

@Override
public boolean onContextItemSelected(MenuItem item) {
switch(item.getItemId())
{
case R.id.action_grid:
Toast.makeText(this,"grid view",Toast.LENGTH_SHORT).show();
return true;
case R.id.action_list:
Toast.makeText(this,"List view",Toast.LENGTH_SHORT).show();
return true;
default:
return super.onContextItemSelected(item);
}

您的错误是针对图像视图的。 您无法直接访问菜单源。 您应该使用 inflater(或menuInflater(或Menu对象:

viewButton = (ImageButton( menu.findViewById(R.id.action_view(;

此链接是一个示例

将 imageview 放在 onCreateOptonsMenu(( 方法中,并使用 menu 参数进行 findViewById:

viewButton = (ImageButton( menu.findViewById(R.id.action_view(;

最新更新