1

呼び出されるたびにオプションメニューを更新したい、

ユーザーがオプションメニューのオプション(お気に入りの追加/削除)をクリックすると、お気に入りかどうかをチェックして機能を実行する機能があります。

問題 : メニューを作成すると、ユーザーが 2 回目にオプション ボタンを押したときに 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)呼び出されるため、メニューは更新されません。メニューを更新するには、メソッドを呼び出す必要があります(「メニューが表示されるたびにメニューを更新するには」を参照してください)。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 に答える