如何根据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