在android中,我创建这样的菜单项?
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, 0, 0, "Menu1");
menu.add(0, 1, 0, "Menu2");
return true;
}
Run Code Online (Sandbox Code Playgroud)
如何设置所有菜单项以编程方式禁用(在我的活动中的代码的另一部分,而不是onCreateOptionsMenu()方法本身)?
谢谢.
您可以使用您设置的groupId一次禁用/启用所有菜单项menu.setGroupEnabled().因此,例如,由于您将项目添加到组0,您将执行以下操作:
menu.setGroupEnabled(0, false);
Run Code Online (Sandbox Code Playgroud)
此外,如果您想动态修改菜单,您应该进入onPrepareOptionsMenu(). onCreateOptionsMenu()每个Activity只调用一次,因此它最适合设置初始菜单结构,但onPrepareOptionsMenu()应该用于稍后在Activity中启用/禁用菜单.
add返回a MenuItem(您也可以从Menu对象中检索),您可以将其存储到变量中.
MenuItem menu1;
public boolean onCreateOptionsMenu(Menu menu) {
menu1 = menu.add(0, 0, 0, "Menu1");
}
public void someOtherMethod() {
if(menu1 != null) {
// if it's null, options menu hasn't been created, so nevermind
menu1.setEnabled(false);
}
}
Run Code Online (Sandbox Code Playgroud)
如果不应该使用它们(而不是禁用它们),我宁愿完全隐藏它们.为此,我做:
menu.clear();
Run Code Online (Sandbox Code Playgroud)
并重新创建它:
invalidateOptionsMenu();
Run Code Online (Sandbox Code Playgroud)
这也适用于从片段添加的菜单项.