Android - 在onCreate上活动时填充菜单

时间:2012-10-02 20:09:59

标签: android menu contextmenu oncreate

也许我错过了显而易见的,但我的菜单只在调用onCreateOptionsMenu(菜单菜单)时创建并填充,如this示例中所示,这似乎只是在我按下菜单后调用按钮。

我想在创建活动时填充菜单,怎么能实现呢?

更新:

也许更好的问题是: 如何获取我的活动的菜单实例?

由于

1 个答案:

答案 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()为止。

http://developer.android.com/reference/android/app/Activity.html#onCreateOptionsMenu%28android.view.Menu%29