android - 刷新 onCreateOptionsMenu android

标签 android android-optionsmenu

我想在每次调用时刷新选项菜单,

我有一个功能,当用户在选项菜单中单击选项(添加/删除收藏夹)时,它会检查它是否是收藏夹并执行该功能,

问题:创建菜单后,它不会在用户第二次按下选项按钮时刷新 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/

相关文章:

java - 查找一个表中不存在另一表中存在的匹配列数据的记录

android - 工具栏选项菜单背景颜色

android - EditText 中的双光标用于输入类型数字/电话(RTL 阿拉伯语)

android - 单击按钮时如何检索按钮的名称(android)

android - 从 OptionsMenu 显示一个 progressDialog

android - 如何设置我的选项菜单,使每行只有 2 个按钮?

android - 将分隔符和图标添加到 android 操作栏弹出菜单

android - 在某些 fragment 中隐藏 MenuItem

android - ImageView中图像的透明部分变黑

java - 查看 Activity 中的 View