也许我遗漏了明显的东西,但我的菜单仅在调用 onCreateOptionsMenu(Menu menu) 时创建和填充,如 this 中所示例如,这似乎只有在我按下菜单按钮后才会被调用。
我想在创建 Activity 时填充菜单,如何实现?
更新:
也许更好的问题是: 如何获取 Activity 的 Menu 实例?
谢谢
最佳答案
创建一个包含这些状态的类,然后在 onCreateOptionsMenu() 中从该类的属性中设置启用/选中等
class MenuStates{
public static boolean userDidPressTheButton;
public static boolean serverDidRespond;
public static boolean colorWasChanged;
}
void someEventHandler(){
MenuStates.userDidPressTheButton = true;
}
void onCreateOptionsMenu(){
myCheckBox.setChecked(MenuStates.userDidPressTheButton);
}
[编辑]
您没有说明为什么要获取菜单实例。一种方法:
Menu optsMenu;
...
// this is called once only before the end of the Activity onCreate().
onCreateOptionsMenu(Menu menu){
opstMenu = menu;
super.onCreateOptionsMenu(menu);
}
然后,根据需要修改菜单。在 onPrepareOptionsMenu() 中执行任何“弹出”工作。
关键的理解是 onCreateOptionsMenu() 和 onPrepareOptionsMenu() 之间的区别。
[更多编辑]
自己完全控制事情:
Menu optsMenu;
onCreate(){
openOptionsMenu() // the menu won't show in onCreate but onCreateOptionsMenu is shown
closeOptionsMenu()
}
onCreateOptionsMenu(Menu menu){
optsMenu = menu;
}
onPrepareOptionsMenu(Menu menu){
menu.clear();
for (int i=0;ioptsMenu.size();i++){
menu.add(optsMenu.get(i).getTitle());
}
return super.onPrepareOptionsMenu(menu);
}
来自文档
You can safely hold on to menu (and any items created from it), making modifications to it as desired, until the next time onCreateOptionsMenu() is called.
关于Android - 在 onCreate Activity 时填充菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12697518/