viewpager setonpagechangelistener sudah tidak digunakan lagi


263

Hari ini saya mencoba untuk mengatur ViewPager.setOnPageChangeListenerdan saya menemukan bahwa itu sudah usang.


15
btw, Metode ini sudah usang. Gunakan addOnPageChangeListener (OnPageChangeListener) dan hapus OnPageChangeListener (OnPageChangeListener) sebagai gantinya. , adalah dari dokumentasi
Blackbelt

Jawaban:


586

ViewPager.setOnPageChangeListenersudah usang sekarang. Perlu digunakan ViewPager.addOnPageChangeListenersebagai gantinya.

sebagai contoh,

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

        }
    });

Anda dapat menemukan ini di sini.


2
Tampaknya Eclipse bahkan tidak dapat menemukan metode addOnPageChangeListener, bolehkah saya bertanya dari perpustakaan dukungan apa ini?
Neon Warge

7
Saya pikir penyebutan clearOnPageChangeListeners () layak di sini, jadi orang tidak akan berakhir dengan banyak pendengar saat menggunakan addOnPageChangeListener ().
tukang kunci

2
Itu membingungkan. Akan lebih baik jika mereka tetap menggunakan sintaks yang sama dan hanya mengganti panggilan ini atau sesuatu dengan versi yang diperbarui.
Jay Snayder

41

ini bekerja untuk saya:

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

Gunakan ViewPager.addOnPageChangeListener alih-alih ViewPager.setOnPageChangeListener .


10

Untuk berjaga-jaga jika seseorang membutuhkan solusi di 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

Anda dapat mencapai melalui SimpleOnPageChangeListener Di bawah ini adalah Kode:

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

Pertanyaan adalah alternatif untuk fungsi setOnPageChangeListener yang sudah tidak digunakan lagi .
Elementary

0
  1. Buat antarmuka jika perlu;

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

    }

  2. Menerapkan Antarmuka di setiap fragmen dalam viewpager seperti yang ditunjukkan

 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. Daftar ini adalah bagaimana Anda pengguna addOnPageListener

    masukkan viewPager.addOnPageChangeListener (ViewPager.OnPageChangeListener (baru) {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. Terapkan panggilan Anda di onPauseFragment () atau onResumeFragment ()

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.