如何根据Android中的API级别进行条件invalidateOptionsMenu()调用?

yut*_*mmo 46 android

每次按下其中一个按钮时,我都会尝试更新我的应用程序的菜单按钮; 在API 11+中,您需要打电话invalidateOptionsMenu()来执行此操作; 因为我希望我的应用程序与较低的API兼容,所以在使用api 11+时如何才调用此方法?

can*_*ews 102

使用

ActivityCompat.invalidateOptionsMenu(Activity activity)
Run Code Online (Sandbox Code Playgroud)

来自兼容性库.


Cze*_*ogy 44

对于那些正在寻找像我一样的答案的人:

如果您正在使用ActionBarSherlock并尝试刷新API <11上的操作栏按钮,而不是

Activity.invalidateOptionsMenu()

您可以使用

SherlockActivity.supportInvalidateOptionsMenu():

  • 如果你在片段中,它将是`getSherlockActivity().supportInvalidateOptionsMenu()` (4认同)

Ric*_*esh 30

如果您要在类中扩展ActionBarActivity,那么您只需要:

supportInvalidateOptionsMenu();
Run Code Online (Sandbox Code Playgroud)


urS*_*Sus 7

我不认为有任何需要兼容性库等等,只需做一个简单的

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
    invalidateOptionsMenu(); 
}
Run Code Online (Sandbox Code Playgroud)

你不需要在afai之前调用它,在按下菜单按钮时调用onPrepareOptionsMenu().这个对我有用.

  • 好吧,我编译和工作得很好,我有frS的minSdk和targetSdk是ICS (2认同)