2016-04-14 12 views
2

Projemde, CountDownTimer öğesinden devralınan bir sınıf var ve onFinish() yönteminde belirli bir MenuItem Simgesini değiştirmek istiyorum. Ama kod işe yaramadı. Eğer onCreateOptionsMenu() yöntemin dışında menü öğelerini değiştirdiğinizdeAndroid'de normal java sınıfından MenuItem simgesini nasıl değiştirebilirim?

@Override 
public void onFinish() { 
    Menu menu = newMenuInstance(context); 
    MenuInflater menuInflater = new MenuInflater(context); 
    menuInflater.inflate(R.menu.menu_main, menu); 
    menu.findItem(R.id.menu_work).setIcon(R.mipmap.ic_action_tick); 
} 

protected Menu newMenuInstance(Context context) { 
    try { 
     Class<?> menuBuilderClass = Class.forName("com.android.internal.view.menu.MenuBuilder"); 

     Constructor<?> constructor = menuBuilderClass.getDeclaredConstructor(Context.class); 

     return (Menu) constructor.newInstance(context); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

    return null; 
} 
+0

invalidateOptionsMenu() ekleyin; Yeni simge –

+0

Hi Yasir ayarlandıktan sonra onFinish() yönteminde, CountDownTimer sınıfım bir etkinlik veya parçanın iç sınıfı değil, etkinliğin dışındaki invalidateOptionsMenu() yöntemini kullanmanın bir yolu var mı? – KevinWang

+0

Bu işlevi yalnızca, ilgili etkinlik başvurusu –

cevap

1

InvalidateOptionsMenu() ekleyin; yeni simgeyi ayarladıktan sonra onFinish() yönteminde.

Bunu etkinlikten aramıyorsanız, lütfen yalnızca bu işlevi, söz konusu etkinlik başvurusuyla çağırabileceğinizi unutmayın.

+0

Sorunlarınızı çözdüyseniz, lütfen cevabı ve oylamayı kabul edin :) –

0

, menü öğelerini yenilemek için invalidateOptionsMenu() aramak zorunda.

İlgili konular