我想在每次调用时刷新选项菜单,
我有一个功能,当用户在选项菜单中单击选项(添加/删除收藏夹)时,它会检查它是否是收藏夹并执行该功能,
问题:创建菜单后,它不会在用户第二次按下选项按钮时刷新 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);
}
}
最佳答案
根据文档,onCreateOptionMenu(菜单菜单)
被调用仅一次,因此它不会刷新您的菜单。您必须调用方法 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);
}
关于android - 刷新 onCreateOptionsMenu android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11929609/