1

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

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

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

1 回答 1

2

根据文档,onCreateOptionMenu (Menu menu)仅调用一次 time,因此它不会刷新您的菜单。您必须调用该方法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);
  }
于 2012-08-13T07:16:37.643 回答