Android 如何从ActionBar隐藏图标?
我想根据变量从ActionBar中隐藏一个图标。有没有一个简单的方法可以做到这一点Android 如何从ActionBar隐藏图标?,android,android-actionbar,Android,Android Actionbar,我想根据变量从ActionBar中隐藏一个图标。有没有一个简单的方法可以做到这一点 我是否需要使用onPrepareOptionsMenu(),如果需要,如何使用?要隐藏菜单项,您应该在菜单充气后对活动中的菜单项使用setVisible()方法。例如: @Override public boolean onPrepareOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.in
我是否需要使用
onPrepareOptionsMenu()
,如果需要,如何使用?要隐藏菜单项,您应该在菜单充气后对活动中的菜单项使用setVisible()
方法。例如:
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.example, menu);
if(showItem) {
menu.findItem(R.id.icon).setVisible(true);
} else {
menu.findItem(R.id.icon).setVisible(false);
}
return true;
}
如果在onCreate()
中声明了变量,则该变量将被限制在onCreate()
的范围内,因此在onPrepareOptions菜单()中无法访问
例如,与此相反:
@Override
protected void onCreate(Bundle savedInstanceState) {
boolean showItem = false;
// ...
}
声明如下:
public boolean showItem = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
// ...
}
另外,如果您想更改按钮按下时的可见性,您需要调用invalidateOptionsMenu()
方法来重新加载菜单。您需要调用invalidateOptionsMenu()
,具体取决于您的变量
当您调用invalidateOptionsMenu()
时,将调用onPrepareOptionsMenu
,在那里您可以像这样隐藏/显示选项菜单
@Override
public boolean onPrepareOptionsMenu(Menu menu){
for(int index = 0 ; index < menu.size() ; index ++){
MenuItem menuItem = menu.getItem(index);
if(menuItem != null) {
// hide the menu items
menuItem.setVisible(false);
}
}
return super.onPrepareOptionsMenu(menu);
}
@覆盖
公共布尔值OnPrepareOptions菜单(菜单){
对于(int index=0;index
好的,这是可行的,但只适用于onCreate()。因此,它不会对变量进行响应changed@Tom调用Activity.invalidateOptions菜单
,指示应该重新创建选项菜单。您知道Java将变量的范围限制在方法中。我假设您在onCreate中声明了变量,这将变量的范围限制在onCreate方法中,因此您需要在onCreate方法之前在activity类中声明它。我更新了答案以帮助您澄清这一点。另外,正如@adneal所说的,如果你想在按下按钮时更改它,你需要调用invalidateOptionsMenu()来更新它。我的变量不在onCreate中。我需要弄清楚如何使用InvalidateOptions菜单(),那么如何调用InvalidateOptions菜单()
?变量应该更改时,我是否执行此操作?