viewpager setonpagechangelistener en desuso

263

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

Jaydipsinh Zala
fuente
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í.

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

Use ViewPager.addOnPageChangeListener en lugar de ViewPager.setOnPageChangeListener .

AeH
fuente
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.
        }

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

Buena vida
fuente