我已经在基本活动中夸大了操作栏菜单并修改了我的基本活动中的操作栏项。但是当我更改方向时,菜单始终为空,这就是为什么它不会更新我的操作栏项目。为什么它为空? 这是我尝试过的代码:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.base, menu);
mMenu = menu;
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// switch (item.getItemId()) {
if (item.getItemId() == R.id.action_refresh) {
refreshNewsData();
return true;
}
if (item.getItemId() == R.id.action_share) {
sharenewsData();
return true;
}
if (item.getItemId() == R.id.action_favorite) {
addFavorites();
return true;
}
return super.onOptionsItemSelected(item);
}
我已在基本活动中编写此代码。 protected void showIcons(int id){
if (mMenu != null) {
MenuItem item = mMenu.findItem(id);
item.setVisible(true);
}
}
protected void hideIcons(int id) {
if (mMenu != null) {
MenuItem item = mMenu.findItem(id);
item.setVisible(false);
}
我使用这些方法更新操作栏菜单项
答案 0 :(得分:0)
您无法直接更新ActionBar菜单项。每当您想要更新菜单项时,请致电invalidateOptionsMenu()
,这将重新绘制操作栏菜单,并拨打onPrepareOptionsMenu()
。您必须处理要在onPrepareOptionsMenu()
内显示/隐藏的菜单项。