viewpager setonpagechangelistener veraltet

263

Heute versuche ich zu setzen ViewPager.setOnPageChangeListenerund habe herausgefunden, dass es veraltet ist.

Jaydipsinh Zala
quelle
15
Übrigens ist diese Methode veraltet. Verwenden Sie stattdessen addOnPageChangeListener (OnPageChangeListener) und removeOnPageChangeListener (OnPageChangeListener). , ist aus der Dokumentation
Blackbelt

Antworten:

586

ViewPager.setOnPageChangeListenerist jetzt veraltet. Müssen ViewPager.addOnPageChangeListenerstattdessen verwenden.

beispielsweise,

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

        }
    });

Sie finden dies hier.

Jaydipsinh Zala
quelle
2
Es scheint, dass Eclipse nicht einmal die Methode addOnPageChangeListener finden konnte. Darf ich fragen, aus welcher Support-Bibliothek dies stammt?
Neon Warge
7
Ich denke, eine Erwähnung von clearOnPageChangeListeners () ist hier wert, so dass man bei der Verwendung von addOnPageChangeListener () nicht mehrere Listener hat.
Uhrmacher
2
Das ist verwirrend. Es wäre schön, wenn sie die gleiche Syntax beibehalten und diesen Aufruf oder etwas anderes durch die aktualisierte Version ersetzen würden.
Jay Snayder
41

das hat bei mir funktioniert:

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
quelle
40

Verwenden Sie ViewPager.addOnPageChangeListener anstelle von ViewPager.setOnPageChangeListener .

AeH
quelle
10

Nur für den Fall, dass jemand die Lösung in Kotlin benötigt :

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
quelle
8

Sie können über SimpleOnPageChangeListener unten den Code erreichen:

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
quelle
Frage war eine Alternative für die veraltete Funktion setOnPageChangeListener.
Grundschule
0
  1. Erstellen Sie bei Bedarf eine Schnittstelle.

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

    }}

  2. Implementieren Sie die Schnittstelle in jedem Fragment im Viewpager wie gezeigt

 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. Listen Sie auf, wie Sie den addOnPageListener verwenden

    Geben Sie viewPager.addOnPageChangeListener ein (neuer 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. Implementieren Sie Ihre Aufrufe in onPauseFragment () oder onResumeFragment ()

Gutes Leben
quelle