也许我错过了显而易见的,但我的菜单只在调用onCreateOptionsMenu(菜单菜单)时创建并填充,如this示例中所示,这似乎只是在我按下菜单后调用按钮。
我想在创建活动时填充菜单,怎么能实现呢?
更新:
也许更好的问题是: 如何获取我的活动的菜单实例?
由于
答案 0 :(得分:2)
创建一个包含这些状态的类,然后在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);
}
来自文档
您可以安全地抓住菜单(以及从中创建的任何项目),根据需要对其进行修改,直到下次调用onCreateOptionsMenu()为止。