Android - 在 onCreate Activity 时填充菜单

标签 android menu contextmenu oncreate

也许我遗漏了明显的东西,但我的菜单仅在调用 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.

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

关于Android - 在 onCreate Activity 时填充菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12697518/

相关文章:

javascript - Jquery 用下一个和后一个链接替换 ​​Div

ios - iOS 上的水平滚动——关闭 Canvas 导航菜单

javascript - 使用 Javascript 禁用 YouTube 自定义上下文菜单/右键单击菜单

android - 即使在获得运营商特权后也不会调用 CarrierService.onLoadConfig

android - ImageView 未显示在 Android 上

android - itext android 印地语 pdf 创建

安卓适配器和上下文菜单

android - 有多少种方法可以在 Android 应用程序和服务器之间同步数据?

c++ - 我第二次使用 Cin.get() 时不工作

wpf - 系统托盘中的右键单击上下文菜单