375 Stimmen

Wie kann ich ein Menüelement in der Aktionsleiste ausblenden?

Ich habe eine Aktionsleiste mit einem Menüpunkt. Wie kann ich diesen Menüpunkt aus-/einblenden?

Das ist es, was ich zu tun versuche:

MenuItem item = (MenuItem) findViewById(R.id.addAction);
item.setVisible(false);
this.invalidateOptionsMenu();

3voto

Aftab Alam Punkte 1633

Android kotlin, Ausblenden oder Sichtbarkeit eines Menüpunktes in der Aktionsleiste programmatisch einstellen.

override fun onCreateOptionsMenu(menu: Menu): Boolean {
    val inflater = menuInflater
    inflater.inflate(R.menu.main_menu, menu)
    val method = menu.findItem(R.id.menu_method)
    method.isVisible = false //if want to show set true
    return super.onCreateOptionsMenu(menu)
}

3voto

CoolMind Punkte 21914

Wenn Sie alles wie in den obigen Antworten gemacht haben, aber ein Menüpunkt immer noch sichtbar ist, überprüfen Sie, ob Sie auf den einzigartig Ressource. Zum Beispiel in onCreateOptionsMenu oder onPrepareOptionsMenu

@Override
public void onPrepareOptionsMenu(Menu menu) {
    super.onPrepareOptionsMenu(menu);
    MenuItem menuOpen = menu.findItem(R.id.menu_open);
    menuOpen.setVisible(false);
}

Klicken Sie mit Strg+Klick auf R.id.menu_open und überprüfen Sie, ob sie nur in einer Menüdatei vorhanden ist. Wenn diese Ressource bereits irgendwo verwendet und in eine Aktivität geladen wird, wird sie versuchen, sich dort zu verstecken.

3voto

zacharia Punkte 1073

Einen Wert in eine Variable setzen und invalidateOptionsMenu() aufrufen;

zum Beispiel

    selectedid=arg2;
            invalidateOptionsMenu();

 public boolean onPrepareOptionsMenu(Menu menu) {

    if(selectedid==1){
        menu.findItem(R.id.action_setting).setVisible(false);
        menu.findItem(R.id.action_s2).setVisible(false);
        menu.findItem(R.id.action_s3).setVisible(false);
    }
    else{
        if(selectedid==2){
            menu.findItem(R.id.action_search).setVisible(false);
            menu.findItem(R.id.action_s4).setVisible(false);
            menu.findItem(R.id.action_s5).setVisible(false);
        }
    }
    return super.onPrepareOptionsMenu(menu);
}

2voto

Dan Alboteanu Punkte 7808

Verwenden. invalidateOptionsMenu()

für den Aufruf onPrepareOptionsMenu(menu: Menu?)

Sie sollten onCreateOptionsMenu() nur verwenden, um den Anfangszustand des Menüs zu erstellen und nicht, um Änderungen während des Lebenszyklus der Aktivität vorzunehmen...

Wenn ein Ereignis eintritt und Sie eine Menüaktualisierung durchführen möchten, müssen Sie invalidateOptionsMenu() aufrufen, damit das System onPrepareOptionsMenu() aufruft.

https://developer.Android.com/guide/topics/ui/menus

1voto

saigopi.me Punkte 11504

Dieser Code hat bei mir funktioniert

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main_menu,menu);
    if (Application.sharedPreferences.getInt("type",1) == 2)
    {
        menuItem = menu.findItem(R.id.menu_travel_orders);
        menuItem.setVisible(false);
    }
    return super.onCreateOptionsMenu(menu);
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X