Hier habe ich eine Liste von Hochschulen. Ich bevorzuge die bestimmte Hochschule mit menu bar
Favourite_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
Antwort
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);
}
}
können Sie bitte erklären, wo ich mit Server Wetter in onprepareOptionMenu oder Callback –
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
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);
...
}
Bitte geben Sie uns einen Code. – learner