我想在每次调用时刷新选项菜单,
我有一个功能,当用户点击选项菜单中的选项(添加/删除收藏夹)时,它会检查它是否是收藏夹并执行功能,
问题:一旦创建菜单,它就不会在第二次用户按下选项按钮时刷新onCreateOptionMenu。我想在每次按下时刷新optionMenu。这是我的代码
@Override
public boolean onCreateOptionsMenu(Menu menu) {
if (is_favorite.equals("1")) {
menu.add(1, 22 ,0,"Remove from Favourites").setIcon(R.drawable.favorites_unselected);
}
else{
menu.add(1, 11 ,0,"Add to Favourites").setIcon(R.drawable.favorites_selected);
}
return true;
}
@Override
public boolean onPrepareOptionsMenu (Menu menu)
{
return super.onPrepareOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
switch (item.getItemId()) {
case 11:
//addtofavouritestask
is_favorite = "1";
return true;
case 22:
//removeFromFavouritestask
is_favorite = "0";
return true;
default:
return super.onOptionsItemSelected(item);
}
}
答案 0 :(得分:2)
根据文档,onCreateOptionMenu (Menu menu)
仅被称为一次,因此它不会刷新您的菜单。您必须调用方法onPrepareOptionsMenu(Menu)
进行刷新(“每次显示时都要更新菜单,请参阅onPrepareOptionsMenu(Menu)
”)。
所以这应该有效:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
if (is_favorite.equals("1")) {
menu.add(1, 22 ,0,"Remove from Favourites").setIcon(R.drawable.favorites_unselected);
}
else{
menu.add(1, 11 ,0,"Add to Favourites").setIcon(R.drawable.favorites_selected);
}
return true;
}
@Override
public boolean onPrepareOptionsMenu (Menu menu)
{
menu.removeGroup(1);
if (is_favorite.equals("1")) {
menu.add(1, 22 ,0,"Remove from Favourites").setIcon(R.drawable.favorites_unselected);
}
else{
menu.add(1, 11 ,0,"Add to Favourites").setIcon(R.drawable.favorites_selected);
}
return super.onPrepareOptionsMenu(menu);
}