La méthode setDrawerListener est obsolète


226

Pendant que je fais quelque chose sur mon application, je constate que le tiroir de navigation de mon application a réduit sa taille. Mais je ne fais rien à ce sujet.

tiroir de navigation

Ensuite, après avoir vérifié le code, j'ai vu que setDrawerListener est obsolète. Quelqu'un a-t-il une solution à cela?

drawerLayout.setDrawerListener(actionBarDrawerToggle);

9
Le code obsolète n'a probablement rien à voir avec la taille du tiroir. Cela signifie qu'ils retireront leur support à l'avenir (la méthode spécifique). Il est probablement remplacé par un addDrawerListener mais je ne suis pas sûr à ce sujet.
chRyNaN

je vois .. mais je ne vois aucun problème, je viens de créer un nouveau fragment qui n'est pas connecté sur ce tiroir .. ne peut pas vraiment comprendre pourquoi cette chose s'est produite ...
david glorioso

quelle version de la bibliothèque que vous utilisez?
Amit Vaghela

J'utilise ceci >> compiler 'com.android.support:appcompat-v7:23.2.0', compiler 'com.android.support:design:23.2.0', compiler 'com.android.support:support-v4 : 23.2.0 '
david glorioso

Réponses:


751

Utilisez addDrawerListener()plutôt.


13
Pourquoi. Simplement, pourquoi.
Broak

9
Pourquoi font-ils cette merde
Alex Wohlbruck

7
Pour la cohérence de l'API. Ils ont ajouté removeDrawerListener()si add...le nom correspond
Marcin Orlowski

26
au moins, ils pourraient inclure use 'addDrawerListener' insteadun message obsolète!
AaA

1
Alors ... pouvons-nous ajouter plusieurs écouteurs de tiroir?
Kenny Worden

84

Remplacer:

drawer.setDrawerListener(...);

avec

drawer.addDrawerListener(...);

public void setDrawerListener(DrawerLayout.DrawerListener listener) Définit un écouteur pour être averti des événements de tiroir.

Notez que cette méthode est obsolète et que vous devez utiliser addDrawerListener(DrawerLayout.DrawerListener)pour ajouter un écouteur et removeDrawerListener(DrawerLayout.DrawerListener)pour supprimer un écouteur enregistré.


18
Où devons-nous retirer l'auditeur de tiroir et est-ce nécessaire?
portfoliobuilder

@portfoliobuilder Cela dépend. Généralement, ce n'est pas nécessaire. Si vous le définissez onCreate()et que vous faites pivoter l'écran, toute l'activité est recréée et un nouvel écouteur est défini. Les cas plus complexes doivent être traités en pensant (probablement) qu'il n'est pas nécessaire d'avoir plus d'un auditeur réglé sur DrawerLayout.
Johnny Five

29

Remplacer setDrawerListener

drawerLayout.setDrawerListener(actionBarDrawerToggle);

avec addDrawerListener

drawerLayout.addDrawerListener(actionBarDrawerToggle);

exemple

  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

Je suppose que je vais répondre à ma question. La dernière navigationViewproduit sa valeur par défaut android:layout_heightpresque au 18dpmoment où vous choisissez "wrap_content". Donc, vous devez choisir celui android:layout_heightque vous voulez navigationViewou simplement faire 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>

Quoi qu'il en soit, sa hauteur augmente automatiquement lorsque vous ajoutez un élément dans le tiroir de navigation.

Enfin, utilisez addDrawerListener()plutôt setDrawerListener()que Luxi Liu l'a dit.


6
parce que ce n'est pas ma question principale. tu ne vois pas? Veuillez lire mon problème avant ... Ce n'est pas seulement la chose déconseillée,
david glorioso

7
Ensuite
corrigez
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.