我重写onPrepareOptionsMenu隐藏和显示菜单项。 当API级别16模拟器测试它; 首次打开菜单时onPrepareOptionsMenu不叫。 但是,当我重新打开菜单它的工作原理。 问题是,只有在第一次使用。 这样,你可以简单的测试;
@Override
public void onPrepareOptionsMenu(Menu menu) {
Toast.makeText(this.getActivity(), "pre", Toast.LENGTH_SHORT).show();
super.onPrepareOptionsMenu(menu);
}
有任何想法吗?
onPrepareOptionsMenu()
被调用每个用户打开上姜饼和下面的菜单时间。 从蜂巢了选项菜单,假设永远是开放的,当项目出现在动作条。
如果你想在你的活动生命周期和内更新选项菜单onPrepareOptionsMenu()
需要调用回调invalidateOptionsMenu()
和onPrepareOptionsMenu()
将被调用。
你能不能落实在您第一次使用的代码onCreateOptionsMenu()
回调? 这就是所谓的每次创建选项菜单的时间,它是在第一次使用创建的。
这是Android的错误: https://code.google.com/p/android/issues/detail?id=24231
当您第一次按下菜单键,调用invalidateOptionsMenu()
或supportInvalidateOptionsMenu()
如果使用支持库。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch(keyCode) {
case KeyEvent.KEYCODE_MENU:
if(mIsMenuFirstClick) {
mIsMenuFirstClick = false;
supportInvalidateOptionsMenu();
}
}
return super.onKeyDown(keyCode, event);
}
文章来源: Jelly bean not calling onPrepareOptionsMenu() when opening the menu for the first time