使用onPrepareOptionsMenu代替onCreateOptionsMenu的我有一个问题在ActionBar
设立一些片段菜单项和我找到了一种方法来解决这个问题,但我不明白为什么它的工作。在片段
我想改变的知名度菜单项之后我夸大它从菜单XML文件中onCreateOptionsMenu
方法。该代码似乎工作正常,但没有明显的影响。我解决了在onCreateOptionsMenu
方法中扩大菜单的问题,但是在onPrepareOptionsMenu
方法中改变了它的可见性。
我想知道的是为什么改变onCreateOptionsMenu
知名度不工作。
我能做些什么onPrepareOptionsMenu
我不能在onCreateOptionsMenu
做什么?
这里有什么样的模式吗?
谢谢!
下面是相关的代码,以防万一:
public class MyFragment extends Fragment {
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.my_menu, menu);
// This does not work, compiles and runs fine, but has no visible effect
MenuItem someMenuItem = menu.findItem(R.id.some_menu_item);
someMenuItem.setVisible(false);
}
@Override
public void onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
// This does work
MenuItem someMenuItem = menu.findItem(R.id.some_menu_item);
someMenuItem.setVisible(false);
}
}
我不知道,但[文件](http://developer.android.com/reference/android/app/Activity。 html#onCreateOptionsMenu(android.view.Menu))说:“_ ...要每次显示菜单时更新菜单,请参阅[onPrepareOptionsMenu(Menu)](http://developer.android.com/reference/android/app/ Activity.html#onPrepareOptionsMenu(android.view.Menu))._“ – 2012-07-07 15:02:07
感谢您的评论! 这里的东西是我不需要'每次显示都更新它'(它一直显示,没有子菜单),我只想配置菜单一次,创建/膨胀时,这就是全部。好吧,在我的情况下看起来可能是一样的,但我的问题的关键是要明白为什么它会像这样工作。 为什么每次显示菜单时都必须“重新配置”菜单,而只能在创建菜单时才执行一次菜单? – 2012-07-07 15:13:30
我理解并同意应该是一个选项。但在我看来,我认为这是Android的工作方式。在某些情况下,您可以使用xml属性对菜单的属性进行硬编码。 – 2012-07-07 17:01:46