2013-08-09 10 views
7

Ich entwickle eine Android-Anwendung, die eine Standard-ActionBar verwendet.
auf einem bestimmten Bildschirm habe ich ein Filter-Symbol, das bedingt erforderlich ist,
abhängig von den Eigenschaften der angezeigten Daten, z. einige Daten sind filterbar
Andere nicht.
ich kann keine Methoden auf actionbar finden, die wahrscheinlich Kandidaten für programmatisches Ausblenden eines Actionbar Aktionssymbols aussehen. Wie kann ich ein Aktionsleisten-Aktionssymbol aktivieren/deaktivieren?
Oder
Wie kann ich ein Aktionsleisten-Aktionssymbol ein-/ausblenden?
dynamisch aktivieren/deaktivieren ausblenden/einblenden Android ActionBar Action-Symbol

Antwort

12

Sehen Sie sich das an, es zeigt, wie Sie Menüeinträge zur Laufzeit ändern können.

http://developer.android.com/guide/topics/ui/menus.html#ChangingTheMenu

Sie könnte beispielsweise das Menü als Membervariable Ihrer Aktivität innerhalb onCreateOpionsMenu speichern() und dann so etwas tun:

MenuItem item = mMenu.findItem(R.id.addAction); 
item.doSomething() 

, wenn Sie ändern möchten, etwas auf einem bestimmten Menüpunkt.

+0

Phil, danke, dass du dir die Zeit genommen hast. Das ist genau das, was ich brauchte. schäme mich, ich konnte es nicht selbst finden :-) – Hector

2

Wie ich verstehe, müssen Sie das Symbol entfernen, das auf der Aktionsleiste oben links angezeigt wird.

Das können Sie mit dieser einfachen Codezeile:

final ActionBar actionBar = getActionBar();  
actionBar.setDisplayShowTitleEnabled(false); 

Und wenn man so will die App-Namen versuchen, um loszuwerden:

actionBar.setDisplayShowHomeEnabled(false); 

Hoffnung, das hilft.

+0

Nicht das, was der OP angefordert hat –

0

Sie können auch versuchen, diese:

final ActionBar actionBar= getActionBar(); 
actionBar.hide(); 

Es wird das Symbol und Titel verbergen.

Vergessen Sie nicht, Ihren Import:

import android.app.ActionBar; 

Good Luck

2

Sie es Methode durch Überschreiben der onPrepareOptionsMenu() tun können. Hier ist ein kleines Beispiel

@Override 
public boolean onPrepareOptionsMenu(Menu menu) { 
    if (count < 1) 
     menu.getItem(4).setEnabled(false); //disable menuitem 5 
    if (!after) 
    menu.getItem(1).setVisible(false); // invisible menuitem 2 
    invalidateOptionsMenu(); 
    return true; 
} 

Jedoch ist diese Methode nur aufgerufen, wenn Sie die Menütaste in der Aktionsleiste klicken. Wenn Sie in der Aktionsleiste Symbole haben (mit Ausnahme der Menütaste), wird durch Klicken auf diese die OnPrepareOptionsMenu() -Methode nicht ausgelöst. Um diese Methode manuell auszulösen, können Sie in Ihren Methoden die Methode invalidateOptionsMenu() verwenden. wie dieser

void yourMethod() { 
... 
invalidateOptionsMenu(); 
... 
} 
+0

Wie macht man das auf Fragment? wie invalidateOptionsMenu();? –

+1

getActivity(). InvalidateOptionsMenu() sollte funktionieren. –