2016-10-10 7 views
1

Abhängig von den willkürlichen Kriterien, die ich entscheide, ist es möglich, den Inhalt des Menüs zu ändern (das Dreifach-Punkt-Ding, auf das du oben rechts klickst, was alle Einstellungen enthält, die du hinzufügen möchtest).Ist es möglich, das Menü in Echtzeit zu ändern?

Kann dies getan werden? Im Augenblick weiß ich nicht, wie man denn ich sehe Zeilen wie diese:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.menu_main, menu); 
    return true; 
} 

und ich weiß nicht, ob ich kann „re-aufblasen“, um das Menü in Echtzeit/ändern Sie die Optionen/usw.

+2

hast du [Ändern Menüoptionen zur Laufzeit] (https://developer.android.com/guide/topics/ui/menus.html#ChangingTheMenu) von den Android-Dokumenten gelesen? –

Antwort

1

das ist die Art, wie ich es tun:

@Override 
public boolean onPrepareOptionsMenu(Menu menu) { 
     if(condition1){ 
      MenuInflater inflater = getMenuInflater(); 
      inflater.inflate(R.menu.menu_1, menu); 
     }else{ 
      MenuInflater inflater = getMenuInflater(); 
      inflater.inflate(R.menu.menu_2, menu); 
     } 
     return super.onPrepareOptionsMenu(menu); 
} 
1

Ja, you can. Die Hauptidee ist, dass Sie die Instanz MenuInflater über getMenuInflater() erhalten, dann erweitern Sie Ihre Menü-XML. Es ist nicht auf die onCreateOptionsMenu() oder onPrepareOptionsMenu() Ihrer Aktivität/Fragment beschränkt.

Außerdem muss es nicht im dreifachen Punktmenü oder Überlaufmenü ausgeblendet werden. Es gibt eine Konfiguration für, wann Sie möchten, dass es im Überlaufmenü ausgeblendet wird oder die ganze Zeit über showAsAction angezeigt wird.

Verwandte Themen