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