Android 重新创建活动时,菜单为空
我已在基本活动中扩展了操作栏菜单,并修改了基本活动中的操作栏项。但当我改变方向时,菜单总是空的,这就是为什么它不更新我的操作栏项目。为什么它是空的? 这是我的代码:Android 重新创建活动时,菜单为空,android,android-actionbar,Android,Android Actionbar,我已在基本活动中扩展了操作栏菜单,并修改了基本活动中的操作栏项。但当我改变方向时,菜单总是空的,这就是为什么它不更新我的操作栏项目。为什么它是空的? 这是我的代码: @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.base, menu); mMenu = menu; return true; }
@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);
}
我已经在基本活动中编写了这段代码。
受保护的无效显示图标(int id){
我正在使用这些方法更新操作栏菜单项您无法直接更新操作栏菜单项。每当您要更新菜单项时,请调用
InvalidateOptions菜单()
这将重新绘制操作栏菜单,并调用OnPrepareOptions菜单()
。您必须注意要在onPrepareOptions菜单()中显示/隐藏的菜单项
我应该在哪里调用InvalidateOptions功能表?它是在创建baseActivity时在里面还是在创建MainActivity时在里面?我不能写那些方法showIcons&HideIcons吗?我想,你在所有的活动中扩展了你的基本活动吗?那么,在这种情况下,扩展基本活动的所有活动中都会发生变化。如果你只是在一个特定活动中更改之前,请仅在该活动中添加隐藏/显示方法。您可以使用隐藏和显示方法,但请确保从OnPrepareOptions菜单()调用它们意味着我应该在onPrepareoption菜单中写入这些方法?但是如何在此方法中调用它们..我在基本活动中写入了这些方法..N我在需要时直接调用它们..如何在onPRepare options菜单中调用它们直接调用?
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);
}