如何根据Android中的API级别进行条件invalidateOptionsMenu()调用?
我试图更新我的应用程序的菜单button,每次按其中之一, 在API 11+中,您需要调用invalidateOptionsMenu()
来执行此操作; 因为我希望我的应用程序能够与较低的API兼容,所以在使用api 11 +时如何才能调用此方法?
使用
ActivityCompat.invalidateOptionsMenu(Activity activity)
从兼容性库 。
对于像我这样寻找答案的其他人来说:
如果您正在使用ActionBarSherlock并尝试刷新API <11上的操作栏button,而不是
Activity.invalidateOptionsMenu()
您可以使用
SherlockActivity.supportInvalidateOptionsMenu()
:
如果你在你的类中扩展ActionBarActivity,那么你只需要这个:
supportInvalidateOptionsMenu();
我不认为有任何需要兼容性库等,只是做一个简单的
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { invalidateOptionsMenu(); }
你不需要在蜂窝之前调用它,因为afaik,onPrepareOptionsMenu()当菜单button被按下时调用。 这个对我有用。
你有没有尝试从支持包中使用FragmentActivity而不是正常的活动? 我相信FramentActivity会有你需要的方法。
我想我已经得到了答案是要创build一个新的类:
public class wrapThree { public void invalidate(myActivity act) { act.invalidateOptionsMenu(); } }
然后如果API是11+,则从myActivity调用该方法
至less这不会给API <11 …上的错误…仍然必须在API 11 +上进行testing
- 处理程序是抽象的,不能被实例化
- UnsatisfiedLinkError:dlopen失败:无法在API <20上find由“libsupportjni.so”引用的符号“strtof”
- Android – 我的应用程序中使用的音量button
- 如何以编程方式隐藏button?
- intelliJ IDEA 13错误:请selectAndroid SDK
- 如何使用监视器(DDMS)工具来debugging应用程序
- java.lang.IllegalArgumentException:包含一个path分隔符
- 升级到Google Play服务:9.0.0错误无法解决:com.google.android.gms:play-services-measurement:9.0.0
- 多个dex文件定义landroid / support / annotation / AnimRes