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);
David Glorioso
quelle
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.

Luxi Liu
quelle
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.

Jzapata
quelle
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);
sivaBE35
quelle
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.

David Glorioso
quelle
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