74 votes

setOnTabSelectedListener est déprécié

Je vois toujours une ligne barrée setOnTabSelectedListener pour le code suivant

viewPager.setAdapter(adapter);
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
    @Override
    public void onTabSelected(TabLayout.Tab tab) {
        viewPager.setCurrentItem(tab.getPosition());
    }
}

Et l'erreur affichée est :

setOnTabSelectedListener est déprécié

Cependant, le programme semble fonctionner parfaitement. Puis-je savoir ce qui se passe ?

213voto

Tim Castelijns Points 29568

Puis-je savoir ce qui se passe ?

Déprécié signifie qu'ils ont décidé que ce n'est pas une bonne façon de faire ou qu'ils ont trouvé une meilleure façon de faire, et cette méthode dépréciée sera supprimée à l'avenir.

La solution consiste à utiliser addOnTabSelectedListener au lieu de setOnTabSelectedListener .
Cela fonctionne presque de la même manière.

La différence est qu'avec addOnTabSelectedListener :

  • vous pouvez ajouter plusieurs auditeurs. Avec setOnTabSelectedListener vous ne pouviez en avoir qu'une.
  • vous devez supprimer l'écouteur lorsque vous en avez fini avec lui, avec removeOnTabSelectedListener .

Règle générale : ne jamais utiliser de méthodes dépréciées.

0 votes

Note positive pour la réponse détaillée couvrant tous les points, mais je pense que "la solution consiste à utiliser addOnTabSelectedListener" devrait être en gras pour trouver rapidement la réponse.

14 votes

@ShirishHerwade mon objectif n'est pas de fournir une réponse rapide, mais de fournir une réponse complète. Je pense que l'explication est aussi importante que la solution :-)

1 votes

Merci @Tim Castelijns, cela m'aide mais quand dois-je utiliser removeOnTabSelectedListener ? est-ce sur onTabUnselected ou onTabReselected ?

21voto

Chol Points 1553

Comme setOnTabSelectedListener est maintenant déprécié, vous pouvez utiliser la nouvelle méthode

addOnTabSelectedListener(OnTabSelectedListener)

Cette modification permet d'ajouter plusieurs écouteurs de sélection d'onglets à une seule TabLayout .

0 votes

Y a-t-il un scénario d'utilisation pour des auditeurs multiples ?

0 votes

Qu'est-ce que vous voulez dire ? Pour ajouter plusieurs listeners, il suffit d'ajouter chaque listener avec cette méthode

10voto

Deniz Points 121

Dans l'utilisation de Kotlin comme le code ci-dessous ;

   tabLayoutView.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
                override fun onTabReselected(p0: TabLayout.Tab?) {
                }

                override fun onTabUnselected(p0: TabLayout.Tab?) {

                }

                override fun onTabSelected(p0: TabLayout.Tab?) {
                    viewPager.currentItem = tabLayoutView.selectedTabPosition
                }

            })

5voto

Hadi Note Points 410

Utilisez plutôt les codes ci-dessous :

tablayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(viewPager));
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tablayout));

Et si vous voulez les synchroniser en cliquant sur les onglets ou en faisant glisser le viewpager, les codes ci-dessus sont la clé de la synchronisation.

0voto

Manoj Perumarath Points 962

Vérifier ma réponse aquí pour l'utilisation de la méthode mise à jour addOnTabSelectedListener

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X