Die Methode setDrawerListener ist veraltet


226

Während ich etwas in meiner App mache, sehe ich, dass die Navigationsleiste in meiner App ihre Größe verringert hat. Aber ich mache nichts dagegen.

Navigationsschublade

Nachdem ich den Code überprüft hatte, sah ich, dass setDrawerListener veraltet ist. Hat jemand eine Lösung dafür?

drawerLayout.setDrawerListener(actionBarDrawerToggle);

9
Der veraltete Code hat wahrscheinlich nichts mit der Schubladengröße zu tun. Dies bedeutet, dass sie in Zukunft die Unterstützung dafür entfernen werden (die spezifische Methode). Es wird wahrscheinlich durch einen addDrawerListener ersetzt, aber da bin ich mir nicht sicher.
chRyNaN

Ich verstehe ... aber ich kann kein Problem sehen. Ich habe gerade ein neues Fragment erstellt, das nicht mit dieser Schublade verbunden ist. Ich kann nicht wirklich verstehen, warum das passiert ist.
David Glorioso

Welche Version der Bibliothek verwenden Sie?
Amit Vaghela

Ich verwende diese >> kompiliere 'com.android.support:appcompat-v7:23.2.0', kompiliere 'com.android.support:design:23.2.0', kompiliere 'com.android.support:support-v4 23.2.0' :
david glorioso

Antworten:


751

Verwenden Sie addDrawerListener()stattdessen.


13
Warum. Einfach, warum.
Broak

9
Warum machen sie diesen Mist
Alex Wohlbruck

7
Für API-Konsistenz. Sie fügten hinzu, removeDrawerListener()so add...wird benannt, um zusammenzupassen
Marcin Orlowski

26
Zumindest könnten sie use 'addDrawerListener' insteadzu veralteter Nachricht gehören!
AaA

1
Also ... können wir mehrere Schubladen-Listener hinzufügen?
Kenny Worden

84

Ersetzen:

drawer.setDrawerListener(...);

mit

drawer.addDrawerListener(...);

public void setDrawerListener(DrawerLayout.DrawerListener listener) Legt fest, dass ein Listener über Schubladenereignisse benachrichtigt wird.

Beachten Sie, dass diese Methode veraltet ist und Sie addDrawerListener(DrawerLayout.DrawerListener)einen Listener hinzufügen und removeDrawerListener(DrawerLayout.DrawerListener)einen registrierten Listener entfernen sollten.


18
Wo sollen wir den Schubladen-Listener entfernen und ist dies notwendig?
Portfoliobuilder

@portfoliobuilder Es kommt darauf an. Im Allgemeinen ist es nicht notwendig. Wenn Sie es einstellen onCreate()und den Bildschirm drehen, wird die gesamte Aktivität neu erstellt und ein neuer Listener eingestellt. Komplexere Fälle sollten mit dem Gedanken behandelt werden, dass (wahrscheinlich) nicht mehr als ein Hörer eingestellt sein muss DrawerLayout.
Johnny Five

29

Ersetzen setDrawerListener

drawerLayout.setDrawerListener(actionBarDrawerToggle);

mit addDrawerListener

drawerLayout.addDrawerListener(actionBarDrawerToggle);

Beispiel

  DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
            ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                    this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
            assert drawer != null;
            drawer.addDrawerListener(toggle);
            toggle.syncState();

            NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
            assert navigationView != null;
            navigationView.setNavigationItemSelectedListener(this);

22

Ich werde wohl meine Frage beantworten. Die neueste navigationViewproduziert seinen Standard android:layout_heightbei fast , 18dpwenn Sie wählen "wrap_content". Sie müssen also das auswählen, das android:layout_heightSie für sich haben möchten navigationViewoder einfach machen android:layout_height="match_parent".

<android.support.design.widget.NavigationView
    android:layout_width="320dp"
    android:layout_height="550dp"
    android:id="@+id/navigation_view_admin"
    android:layout_gravity="start">

</android.support.design.widget.NavigationView>

Auf jeden Fall erhöht sich die Höhe automatisch, wenn Sie ein Element in die Navigationsschublade einfügen.

Zuletzt verwenden, addDrawerListener()anstatt setDrawerListener()wie Luxi Liu sagte.


6
denn das ist nicht meine Hauptfrage. kannst du nicht sehen Bitte lesen Sie mein Problem vor ... Es ist nicht nur die veraltete Sache,
David Glorioso

7
Dann können Sie den Titel Ihrer Frage
korrigieren
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.