syl*_*loc 9 android android-4.1-jelly-bean
我在onPrepareOptionsMenu上重写隐藏和显示菜单项.使用API级别16仿真器进行测试时; 第一次打开菜单时不调用onPrepareOptionsMenu.但是,当我重新打开菜单时,它可以工作.问题仅在于第一次使用.你可以用它来简单地测试它;
@Override
public void onPrepareOptionsMenu(Menu menu) {
Toast.makeText(this.getActivity(), "pre", Toast.LENGTH_SHORT).show();
super.onPrepareOptionsMenu(menu);
}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
IKa*_*agh 17
onPrepareOptionsMenu()
每次用户打开Gingerbread及其下方的菜单时都会调用.从Honeycomb向上,当ActionBar中存在项目时,假定选项菜单始终处于打开状态.
如果您想在活动生命周期期间和onPrepareOptionsMenu()
回调中更新选项菜单,则需要调用invalidateOptionsMenu()
并onPrepareOptionsMenu()
调用.
您是否可以在onCreateOptionsMenu()
回调中实现首次使用的代码?每次创建选项菜单时都会调用它,并在首次使用时创建它.
它是android bug: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);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4721 次 |
最近记录: |