2016-03-30 20 views
0

Hier habe ich eine Liste von Hochschulen. Ich bevorzuge die bestimmte Hochschule mit menu barFavourite_icon. Dann die Favourite_icon geändert als Favourite_icon1 Wenn das College von einer anderen Zeit angesehen wird, dass Menüleiste Favourite_icon sollte als Favourite_icon1. So überprüfe ich, ob das College bereits mit Hilfe des Servers API ist. Also, wie kann ich die Menüleiste Icon von oncreate() -Methode einstellen.So ändern Sie die Menüleiste durch oncreate() Methode

+1

Bitte geben Sie uns einen Code. – learner

Antwort

1

Wenn Sie die Android-Menüleiste meinen, sollten Sie nicht versuchen, es in onCreate() ändern, da es nicht instanziiert wurde, und wird immer eine NullPointerException werfen.

Wenn Sie auf eine API-Antwort warten, um die Favoriten zu finden, müssen Sie eine lokale Menüvariable erstellen, um darauf zugreifen zu können.

Menu myMenu; 

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

Dann, was auch immer Ihre Callback-Methode des Server-API so etwas tun sollte:

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

können Sie bitte erklären, wo ich mit Server Wetter in onprepareOptionMenu oder Callback –

+0

Callback war nur ein Beispiel für was auch immer ein Rückruf für Ihre API-Rückruf sein könnte. Ich kann nicht sagen, wann die beste Zeit dafür wäre, da ich nicht weiß, wie Ihre Anwendung funktioniert. Sie können den API-Aufruf bei onCreate durchführen, wenn Sie möchten, aber Sie können erst später im Lebenszyklus (nachdem das Menü initialisiert wurde) mit dem Menü arbeiten. – lase

0

Etwas wie folgt aus:

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