刷新onCreateOptionsMenu android

时间:2012-08-13 07:09:33

标签: 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);
    }
}

1 个答案:

答案 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);
  }