我使用了ActivityCompat.invalidateOptionsMenu(MainActivity.this);
,这样我的菜单项“刷新”就可以自动启用/禁用,而不必使用触摸“菜单”选项(假设用户让菜单打开……我需要“刷新”菜单项自动禁用和启用)。
在Android 11+上,ActivityCompat.invalidateOptionsMenu(MainActivity.this)
运行得很好。但是我能为android API < 11使用什么呢?:我已经搜索了这么多,但我找不到答案。有人能在这方面帮我一下吗?
这在使用onPrepareOptionsMenu
和ActivityCompat.invalidateOptionsMenu(MainActivity.this)
的Android API 11+中工作得很好。这个问题是试图在Android API < 11中完成的。
下面是我的onPrepareOptionsMenu
方法:
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
if(menuRefreshEnable){
menu.getItem(0).setEnabled(true);
}
if(!menuRefreshEnable){
menu.getItem(0).setEnabled(false);
}
return true;
}
发布于 2013-08-31 18:27:38
在API < 11
中使用supportInvalidateOptionsMenu()
方法
发布于 2014-01-19 17:54:32
ActivityCompat.invalidateOptionsMenu()
不会回调onPrepareOptionsMenu();
,它只是直接更新菜单。只需要放一些Log.d()
,然后自己检查就可以了。
这对我来说很有效(我使用的是API 8):
private Menu mMenu;
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.track_fragment, menu);
mMenu = menu;
}
...
private void someMethod() {
...
if (mMenu != null) {
MenuItem item = mMenu.findItem(R.id.new_track);
if (item != null) {
item.setVisible(false);
ActivityCompat.invalidateOptionsMenu(this.getActivity());
}
}
...
}
我的someMethod()
被从多个地方调用,甚至在onCreateOptionsMenu()
之前,所以我必须检查mMenu != null
。
发布于 2012-12-23 12:15:01
如果API大于或等于11,则返回true,因此受支持。在API 11之前,菜单是在按下菜单按钮时绘制的,因此不需要此方法,因为它是自动发生的。
https://stackoverflow.com/questions/14008470
复制相似问题