viewpager setonpagechangelistener en desuso


263

Hoy estoy tratando de configurar ViewPager.setOnPageChangeListenery descubrí que está en desuso.


15
Por cierto, este método está en desuso. Use addOnPageChangeListener (OnPageChangeListener) y elimineOnPageChangeListener (OnPageChangeListener) en su lugar. , es de la documentación
Blackbelt

Respuestas:


586

ViewPager.setOnPageChangeListenerestá en desuso ahora. Necesito usar ViewPager.addOnPageChangeListeneren su lugar.

por ejemplo,

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) {

        }
    });

Puedes encontrar esto aquí.


2
Parece que Eclipse ni siquiera pudo encontrar el método addOnPageChangeListener, ¿puedo preguntar de qué biblioteca de soporte es esto?
Neon Warge

77
Creo que una mención de clearOnPageChangeListeners () vale la pena aquí, por lo que uno no termina con múltiples oyentes cuando se usa addOnPageChangeListener ().
relojero

2
Eso es confuso Sería bueno si mantuvieran la misma sintaxis y simplemente reemplazaran esta llamada o algo con la versión actualizada.
Jay Snayder

41

esto funcionó para mí:

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

Use ViewPager.addOnPageChangeListener en lugar de ViewPager.setOnPageChangeListener .


10

Por si alguien necesita la solución en 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

Puede lograr a través de SimpleOnPageChangeListener Abajo está el Código:

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 pregunta era una alternativa para la función obsoleta setOnPageChangeListener.
Elemental

0
  1. Cree una interfaz si es necesario;

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

    }

  2. Implemente la interfaz en cada fragmento del visor como se muestra

 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. Listar así es como usas el addOnPageListener

    ingrese viewPager.addOnPageChangeListener (nuevo 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. Implemente sus llamadas en onPauseFragment () o onResumeFragment ()

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.