果冻豆在第一次打开菜单时不会调用onPrepareOptionsMenu()

我正在重写onPrepareOptionsMenu来隐藏和显示菜单项。 使用API​​级别16仿真器进行testing时, 第一次打开菜单时,不会调用onPrepareOptionsMenu。 但是当我重新打开它的作品。 问题是只有第一次使用。 你可以用这个简单的testing一下;

@Override public void onPrepareOptionsMenu(Menu menu) { Toast.makeText(this.getActivity(), "pre", Toast.LENGTH_SHORT).show(); super.onPrepareOptionsMenu(menu); } 

有任何想法吗?

Solutions Collecting From Web of "果冻豆在第一次打开菜单时不会调用onPrepareOptionsMenu()"

每次用户打开姜饼和下面的菜单时,都会调用onPrepareOptionsMenu() 。 从Honeycomb开始,选项菜单被假定为在项目出现在ActionBar中时始终处于打开状态。

如果要在活动onPrepareOptionsMenu()期间和onPrepareOptionsMenu()callback期间更新选项菜单,则需要调用invalidateOptionsMenu()并调用onPrepareOptionsMenu()

你能不能在onCreateOptionsMenu()callback中实现你的第一次使用的代码? 每次创build选项菜单时都会调用它,并在首次使用时创build它。

这是Android的bug: https : //code.google.com/p/android/issues/detail?id=24231

当您第一次按菜单button时,如果您使用支持库,请调用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); }