Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android-创建活动时填充菜单_Android_Menu_Contextmenu_Oncreate - Fatal编程技术网

Android-创建活动时填充菜单

Android-创建活动时填充菜单,android,menu,contextmenu,oncreate,Android,Menu,Contextmenu,Oncreate,也许我忽略了明显的问题,但我的菜单只有在调用onCreateOptions菜单(menu menu)时才被创建和填充,如示例所示,而且这似乎只有在我按下菜单按钮后才被调用 我想在创建活动时填充菜单,如何实现这一点 更新: 也许更好的问题是: 如何获取活动的菜单实例 谢谢创建一个包含这些状态的类,然后在onCreateOptions菜单()中从该类的属性中设置启用/选中的etc [编辑] 您没有说明为什么要获取菜单实例。一种方法: Menu optsMenu; ... // this is c

也许我忽略了明显的问题,但我的菜单只有在调用onCreateOptions菜单(menu menu)时才被创建和填充,如示例所示,而且这似乎只有在我按下菜单按钮后才被调用

我想在创建活动时填充菜单,如何实现这一点

更新:

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


谢谢

创建一个包含这些状态的类,然后在onCreateOptions菜单()中从该类的属性中设置启用/选中的etc

[编辑]

您没有说明为什么要获取菜单实例。一种方法:

Menu optsMenu;

...

// this is called once only before the end of the Activity onCreate().
onCreateOptionsMenu(Menu menu){

    opstMenu = menu;
    super.onCreateOptionsMenu(menu);

}
然后,根据需要修改菜单。在OnPrepareOptions功能表()中执行任何“弹出”操作

关键的理解是onCreateOptions菜单()和onPrepareOptions菜单()之间的区别

[更多编辑]

要完全控制自己的事情:

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);

}
从文件中

您可以安全地保留菜单(以及从中创建的任何项目),根据需要对其进行修改,直到下次调用onCreateOptions菜单()


为什么?您希望实现什么?我希望在活动中发生事件时呈现菜单选项的状态(启用/选中/等…)。在他们第一次调用show之前…为什么不直接调用menuInflater来获取菜单?将方法放在活动的onCreate中?每个人似乎都知道一些我不知道的事情。。。如果我想像你建议的那样调用这个方法,我需要一个菜单对象的实例,甚至是一个伪对象。。。如何创建一个?这是我考虑过的一个解决方案,但我仍然希望能够访问“活动”菜单实例…仅当我第一次按下“菜单”按钮时,才会调用CreateOptions菜单(…)。。。我错过了什么正确的东西吗。每次显示OnPrepareOptions功能表时都会调用它。阅读文档!:)我已经阅读了文档,但是第一次按下菜单按钮时会调用OnCreateMenu,同时也会调用onPrepareMenu。。。下一次只在准备阶段。。。我想预先动态地创建/捕获/注入/获取菜单的实例。您将如何实例化“optsMenu”
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);

}