在 oncreate 或 onresume 中获取菜单项
get menuitem in oncreate or onresume
我需要禁用特定功能的菜单项,我已经尝试过一些代码,例如:
public class ExampleActivity extends AppCompatActivity
Menu menu;
然后在这里赋值
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);
this.menu = menu;
return true;
}
然后使用分配的菜单对象获取所需的项目
menu.findItem(R.id.avviapc).setEnabled(false);
或:
MenuItem avviopc;
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.right_home, menu);
avviopc = menu.getItem(R.id.avviapc);
return true;
}
avviopc.setEnabled(false);
但我总是崩溃:
java.lang.IndexOutOfBoundsException: Index: 2131296295, Size: 3
at java.util.ArrayList.get(ArrayList.java:411)
at android.support.v7.view.menu.MenuBuilder.getItem(MenuBuilder.java:741)
或:
Attempt to invoke interface method 'android.view.MenuItem android.view.Menu.findItem(int)' on a null object reference
我调用:menu.findItem(R.id.avviapc).setEnabled(false);
onCreate 或 onResume 如果 if 中的特定值为真。
如果在 activity 启动手动按钮后 2/3 秒后调用代码工作。
MenuItem.getItem(index) 获取菜单项的索引。如果您想使用 id 来引用该项目,请使用 MenuItem.findItem:
avviopc=menu.findItem(R.id.avviapc); //项目编号
avviopc=menu.getItem(indexOfavviopc); //项目索引
在onCreateOptionsMenu
中调用你的方法来解决索引错误:
avviopc= menu.findItem(R.id.avviapc); // Do not use getItem(position)
但是,如果您也知道菜单项的位置,假设它们是三个,那么您想要第三个:
avviopc = menu.getItem(2);
说明:
getItem(int)
想要该菜单的菜单项的位置。
findItem(int)
想要菜单项的资源 id
。
菜单在oncreate和onresume之后调用=)
我需要禁用特定功能的菜单项,我已经尝试过一些代码,例如:
public class ExampleActivity extends AppCompatActivity
Menu menu;
然后在这里赋值
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);
this.menu = menu;
return true;
}
然后使用分配的菜单对象获取所需的项目
menu.findItem(R.id.avviapc).setEnabled(false);
或:
MenuItem avviopc;
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.right_home, menu);
avviopc = menu.getItem(R.id.avviapc);
return true;
}
avviopc.setEnabled(false);
但我总是崩溃:
java.lang.IndexOutOfBoundsException: Index: 2131296295, Size: 3
at java.util.ArrayList.get(ArrayList.java:411)
at android.support.v7.view.menu.MenuBuilder.getItem(MenuBuilder.java:741)
或:
Attempt to invoke interface method 'android.view.MenuItem android.view.Menu.findItem(int)' on a null object reference
我调用:menu.findItem(R.id.avviapc).setEnabled(false);
onCreate 或 onResume 如果 if 中的特定值为真。
如果在 activity 启动手动按钮后 2/3 秒后调用代码工作。
MenuItem.getItem(index) 获取菜单项的索引。如果您想使用 id 来引用该项目,请使用 MenuItem.findItem:
avviopc=menu.findItem(R.id.avviapc); //项目编号
avviopc=menu.getItem(indexOfavviopc); //项目索引
在onCreateOptionsMenu
中调用你的方法来解决索引错误:
avviopc= menu.findItem(R.id.avviapc); // Do not use getItem(position)
但是,如果您也知道菜单项的位置,假设它们是三个,那么您想要第三个:
avviopc = menu.getItem(2);
说明:
getItem(int)
想要该菜单的菜单项的位置。
findItem(int)
想要菜单项的资源 id
。
菜单在oncreate和onresume之后调用=)