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);
david glorioso
la source
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.

Luxi Liu
la source
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é.

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

david glorioso
la source
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