Viewpager setonpagechangelistener obsolète

263

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

Jaydipsinh Zala
la source
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.

Jaydipsinh Zala
la source
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) {
    }
});
kinsley kajiva
la source
40

Utilisez ViewPager.addOnPageChangeListener au lieu de ViewPager.setOnPageChangeListener .

AeH
la source
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.
        }

    })
Noelia
la source
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);
Shoeb Siddique
la source
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 ()

Bonne vie
la source