2016-03-30 12 views
0

Burada, kolejler listesi var. Ben menu barFavourite_icon kullanarak belirli kolej en sevdiğim. Favourite_iconFavourite_icon1 olarak değiştirildi Kolej başka bir zaman görüntülendiğinde, bu Favourite_icon menü çubuğu Favourite_icon1 olarak olmalıdır. Böylece ben kontrol ediyorum kolej zaten API sunucu kullanarak tercih edildi. Böylece, menü çubuğunu Icon oncreate() yönteminden nasıl ayarlayabilirim.Menü çubuğu öğesi, oncreate() yöntemi ile nasıl değiştirilir

+1

bize bazı kodunu belirtin sunucu API geri çağırma yöntemi böyle bir şey yapması gerektiğini olursa olsun Sonra

Menu myMenu; @Override public boolean onPrepareOptionsMenu(Menu menu) { myMenu = menu; return super.onPrepareOptionsMenu(menu); } 

. – learner

cevap

1

Android menü çubuğunu kastediyorsanız, örnek oluşturulmadığından ve her zaman NullPointerException'u atacağından, onCreate() içinde değiştirmeyi denememelisiniz.

Sık kullanılanları bulmak için bir API yanıtı bekliyorsanız, erişmek için yerel bir menü değişkeni oluşturmanız gerekir. Böyle

void callback(boolean favorite) { 
    if (favorite) { 
     myMenu.findItem(R.id.myMenuItem).setIcon(R.drawable.Favourite_icon1); 
    } 
} 
+0

, onprepareOptionMenu'da sunucu ile nerede kontrol etmek istediğinizi açıklayabilir veya geri dönebilirsiniz –

+0

Geri arama, geri bildiriminiz için geri çağırma yönteminiz için bir örnektir. Uygulamanızın nasıl çalıştığını bilmediğimden, en uygun zamanın ne zaman olacağını söyleyemem. İsterseniz API çağrısını 'onCreate 'haline getirebilirsiniz, ancak menüde daha sonra yaşam döngüsüne (menü başlatıldıktan sonra) kadar çalışamazsınız. – lase

0

şey:

@Override 
    protected void onCreate (Bundle savedInstanceState){ 
     ... 
     isSomethingInMenu = true; 
     invalidateOptionsMenu(); 
     ... 
    } 

    @Override 
    public boolean onCreateOptionsMenu (Menu menu){ 
     getMenuInflater().inflate(R.menu.menu, menu); 
     menu.findItem(R.id.action_something).setVisible(isSomethingInMenu); 
     ... 
    } 
İlgili konular