Viewpager setonpagechangelistener obsolète


263

Aujourd'hui, j'essaie de régler ViewPager.setOnPageChangeListeneret j'ai découvert qu'il est obsolète.


15
btw, Cette méthode est déconseillée. Utilisez plutôt addOnPageChangeListener (OnPageChangeListener) et removeOnPageChangeListener (OnPageChangeListener). , provient de la documentation
Blackbelt

Réponses:


586

ViewPager.setOnPageChangeListenerest obsolète maintenant. Besoin d'utiliser à la ViewPager.addOnPageChangeListenerplace.

par exemple,

ViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

        }

        @Override
        public void onPageSelected(int position) {

        }

        @Override
        public void onPageScrollStateChanged(int state) {

        }
    });

Vous pouvez le trouver ici.


2
Il semble qu'Eclipse ne puisse même pas trouver la méthode addOnPageChangeListener, puis-je demander de quelle bibliothèque de support s'agit-il?
Neon Warge

7
Je pense qu'une mention de clearOnPageChangeListeners () est digne ici, donc on ne se retrouve pas avec plusieurs écouteurs lors de l'utilisation de addOnPageChangeListener ().
horloger

2
C'est déroutant. Ce serait bien s'ils conservaient la même syntaxe et remplaçaient simplement cet appel ou quelque chose avec la version mise à jour.
Jay Snayder

41

cela a fonctionné pour moi:

viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener(){

    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {       
        conterchange.setText(""+(1+position));
    }

    @Override
    public void onPageSelected(int position) {
    }

    @Override
    public void onPageScrollStateChanged(int state) {
    }
});

40

Utilisez ViewPager.addOnPageChangeListener au lieu de ViewPager.setOnPageChangeListener .


10

Juste au cas où quelqu'un aurait besoin de la solution dans kotlin :

viewPager.addOnPageChangeListener (object: ViewPager.OnPageChangeListener {
        override fun onPageScrollStateChanged(state: Int) {
            TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
        }

        override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {
            TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
        }

        override fun onPageSelected(position: Int) {
            TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
        }

    })

8

Vous pouvez réaliser via SimpleOnPageChangeListener ci-dessous est le code:

private Fragment page = null;
/** Defining a listener for pageChange */
        ViewPager.SimpleOnPageChangeListener pageChangeListener = new ViewPager.SimpleOnPageChangeListener(){
            @Override
            public void onPageSelected(int position) {
                super.onPageSelected(position);

                page = getSupportFragmentManager().findFragmentByTag("android:switcher:" + R.id.pager_selectPhotos + ":" + position);

                System.out.println(page);
                switch (position) {
                case 0:

                    break;
                case 1:

                    break;

                default:
                    break;
                }
            }
        };
        /** Setting the pageChange listener to the viewPager */
        _pager.setOnPageChangeListener(pageChangeListener);

La question était une alternative pour la fonction obsolète setOnPageChangeListener.
Élémentaire du

0
  1. Créez une interface si besoin est;

    public interface FragmentLifecycle {
    public void onPauseFragment();
    public void onResumeFragment();

    }

  2. Implémentez l'interface dans chaque fragment du viewpager comme indiqué

 public class FragmentCast extends Fragment implements FragmentLifecycle {
  @Override
    public void onPauseFragment() {
        Log.i(TAG, "onPauseFragment()");
        Toast.makeText(getActivity(), "onPauseFragment():" + TAG, Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onResumeFragment() {
        Log.i(TAG, "onResumeFragment()");
        Toast.makeText(getActivity(), "onResumeFragment():" + TAG, Toast.LENGTH_SHORT).show();
    }
  1. Listez comment vous utilisez l'addOnPageListener

    entrez viewPager.addOnPageChangeListener (nouveau ViewPager.OnPageChangeListener () {int currentPosition = 0;

        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
    
        }
    
        @Override
        public void onPageSelected(int position) {
    
    
            FragmentLifecycle   fragmentLifecycleToShow =(FragmentLifecycle) viewPager.getAdapter().instantiateItem(viewPager, viewPager.getCurrentItem());
            fragmentLifecycleToShow.onResumeFragment();
    
            FragmentLifecycle   fragmentLifecycleToHide =(FragmentLifecycle) viewPager.getAdapter().instantiateItem(viewPager, currentPosition);
            fragmentLifecycleToHide.onPauseFragment();
    
            currentPosition = position;
        }
    
        @Override
        public void onPageScrollStateChanged(int state) {
    
        }
    });
  2. Implémentez vos appels dans onPauseFragment () ou onResumeFragment ()

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.