2014-11-02 39 views
0

我的菜單項用作切換按鈕,它從圖標「a」和「b」切換。當應用程序的方向發生變化時,我保存該包內的狀態並在下一次onCreate期間檢索它。但我需要將圖標置於正確的狀態:檢索菜單項

if(muted){ 
      item.setChecked(true); 
      item.setIcon(R.drawable.muted); 
     } 
     else{ 
      item.setChecked(false); 
      item.setIcon(R.drawable.unmuted); 
     } 

但是我如何獲取項目引用?

+0

爲什麼不在需要時調用item.setChecked(),並自己處理剩下的事情?我不知道如果我得到你的問題。它是什麼樣的項目?菜單項? – Michael 2014-11-02 23:57:01

+0

這是一個菜單項,我不能只是因爲同樣的原因調用item.setChecked(),我不知道如何檢索使用id的MenuItem。 – 2014-11-03 00:07:41

+1

當您膨脹菜單(或以其他方式創建它)時,請保存引用,然後調用MenuItem item = menu.findItem(R.id.something),將引用存儲在活動中,並在需要時調用setChecked。 – Michael 2014-11-03 00:10:09

回答

0
在OnCreateOptionsMenu

MenuItem item = menu.findItem(R.id.my_menu_item_id); 
if(muted){ 
    item.setChecked(true); 
    item.setIcon(R.drawable.muted); 
} 
else{ 
    item.setChecked(false); 
    item.setIcon(R.drawable.unmuted); 
} 

如果您需要更新項目的狀態只需要調用invalidateOptionsMenu();

+0

我實際上已經嘗試過@邁克爾在評論中建議,但它並不總是工作,甚至當它這樣做,我不得不點擊2次的項目它改變。這就是爲什麼我試圖在活動期間做這件事創建 – 2014-11-03 18:20:16

+0

它現在的作品,我不得不使用@Michael onCreateOptionsMenu內的引用,你說它不一直工作的原因是因爲我捆綁了一些其他的驗證,當我是檢查savedInstanceState不爲null。 – 2014-11-03 20:25:43