这很好用,但是如果我使用其他活动而我使用后退按钮,它就不会更新操作栏,因为活动已经创建并且它不会更新行动吧。已经尝试在on_create方法上使用supportInvalidateOptionsMenu()但它没有用。
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
Cursor cursor = messages.getMessages();
if(cursor.getCount()>0){
inflater.inflate(R.menu.actionbar1, menu);
}else{
inflater.inflate(R.menu.actionbar2, menu);
}
return super.onCreateOptionsMenu(menu);
}
答案 0 :(得分:2)
正如onCreateOptionsMenu(Menu)所述的文档:
仅在选项菜单第一次调用时调用一次 显示。要在每次显示菜单时更新菜单,请参阅 onPrepareOptionsMenu(菜单)。
因此,返回已创建的Activity不会再次触发onCreateOptionsMenu(Menu)
。
我建议你做的只是创建一个包含所有菜单项的菜单,并根据一个或多个标志在onPrepareOptionsMenu(Menu)
中有选择地激活/停用它们。然后将invalidateOptionsMenu()
放在每次显示活动时调用的onResume()
中。
希望有所帮助
答案 1 :(得分:1)
每当您需要更改图标时,请尝试拨打invalidateOptionsMenu
。
它会通过调用onPrepareOptionsMenu
来破坏您的菜单并重新充气。