viewpager setonpagechangelistener veraltet


263

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


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.


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

40

Verwenden Sie ViewPager.addOnPageChangeListener anstelle von ViewPager.setOnPageChangeListener .


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

    })

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

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.