2012-08-13 68 views
1

我想刷新選項菜單每次被調用時,刷新onCreateOptionMenu安卓

我當用戶點擊選項菜單中的選項(添加/刪除喜歡的),其中一個功能,它會檢查它是否是最喜歡與否,並執行功能,

問題:一旦它創建菜單,它不刷新onCreateOptionMenu在第二次用戶按下選項按鈕。我想在每次按下時刷新選項菜單。這是我爲這個

@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); 
    } 
} 
+0

您是否嘗試過'invalidateOptionsMenu()'? – Eric 2012-08-13 07:15:21

+0

@Eric我正在做薑餅,這種方法是爲了更高的API – 2012-08-13 07:22:26

回答

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); 
    } 
+0

haha​​haha我也是這樣做的,但是在onprepare中刪除了groupID的菜單,所以它每次創建所需的選項 – 2012-08-13 07:28:18

+0

好吧,我編輯了答案:) – 2012-08-13 07:30:33