Die Werkzeugleiste setNavigationOnClickListener bricht die ActionbarDrawerToggle-Funktionalität

8

Ich tausche die Aktionsleiste für die Werkzeugleiste aus, und ich habe fast jedes Teil des Puzzles an Ort und Stelle. Mein Problem ist speziell, wenn ich nach oben navigiere und die Navigationsleiste wiederherstelle, funktioniert die Umschalttaste nicht mehr. Ich habe herausgefunden, dass ich die Schublade öffnen kann, wenn ich den Schubladenmodus auf "entriegelt" stelle, aber ich kann nicht klicken, um die Schublade zu öffnen.

Also lade ich Fragment A, das Verhalten der Schublade ist in Ordnung, gehe runter zu Fragment B und lege das Auf-Symbol an, drücke auf, um zu A zurückzukehren, und die Schublade öffnet sich nicht mehr mit einem Klick.

Eingeben von Fragment B:

%Vor%

Die Navigationsleiste ist genau wie das Beispiel eingerichtet. Vielleicht ist das Problem auf die alte Art der Einrichtung der Optionen zurückzuführen? Zum Beispiel habe ich dies noch in meiner Tätigkeit:

%Vor%

BEARBEITEN:

Okay, ich habe das Problem auf setNavigationOnClickListener () eingegrenzt. Wenn ich das nicht einstelle (und über die Zurück-Taste nach oben gehe) - verhält sich die Schublade korrekt. Die Frage ist nun, wie kann ich dem Benutzer richtig erlauben, nach oben zu gehen, und den Klick-Listener wiederherstellen, nachdem wir nach oben gegangen sind?

    
Daniel Wilson 01.02.2015, 14:15
quelle

5 Antworten

13

Ich habe herausgefunden, dass ich den falschen Klick-Listener erstellt habe. Anstelle von setNavigationOnClickListener () brauche ich setToolbarNavigationClickListener () :)

Eine subtile, aber wichtige Änderung, jetzt verhält sich die Symbolleiste in Partnerschaft mit dem v7 ActionBarDrawerToggle

%Vor%     
Daniel Wilson 04.02.2015, 11:47
quelle
6

In meinem Fall war es eine Frage der Reihenfolge, ich musste zuerst die Symbolleiste und dann den On-Click-Listener einstellen. in dieser Reihenfolge:

%Vor%

und nicht:

%Vor%     
Ezra Steinmetz 21.08.2016 15:35
quelle
5

Inspiriert von der Lösung von Daniel Wilson , aber Sie müssen es nur einmal tun und es ist alles eingestellt.

In meinem NavigationDrawer 's setUp() (oder du kannst es überall machen, wo du deine ActionBarDrawerToggle -Instanz initialisierst), schreibe ich diesen Code:

%Vor%

Nun wird jedes Mal, wenn android.id.home gedrückt wird und das Hamburger-Zeichen nicht angezeigt wird, onBackPressed() der übergeordneten Aktivität aufgerufen.

    
Sufian 20.06.2015 06:29
quelle
0

Ich denke, Sie können nicht verwenden:

%Vor%

, weil es das normale Verhalten der Navigationsleiste unterbricht.

Versuchen Sie stattdessen etwas in onCreateOptionsMenu (Menü Menu, MenuInflater inpater):

%Vor%

und dann in onOptionsItemSelected

%Vor%

PS: vergiss nicht setHasOptionsMenu (true); in Ihrem Fragment onCreateView.

    
Daniel 03.02.2015 20:15
quelle
0

Um zu animieren können wir verwenden.

%Vor%

Aktion 0 für HAMBURGER-Symbol und 1 für BACK übergeben.

%Vor%     
OM PRAKASH SEERVI 20.09.2016 11:44
quelle