व्यूपेजर सेटोनपेजचैंगेलिस्टनर को पदावनत किया गया


263

आज मैं सेट करने की कोशिश कर रहा हूं ViewPager.setOnPageChangeListenerऔर मुझे पता चला है कि यह पदावनत है।


15
btw, यह विधि पदावनत है। इसके बजाय addOnPageChangeListener (OnPageChangeListener) और RemoveOnPageChangeListener (OnPageChangeListener) का उपयोग करें। , प्रलेखन से है
ब्लैकबेल्ट

जवाबों:


586

ViewPager.setOnPageChangeListenerअब पदावनत कर दिया गया है। ViewPager.addOnPageChangeListenerइसके बजाय उपयोग करने की आवश्यकता है ।

उदाहरण के लिए,

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

        }
    });

आप इसे यहाँ पा सकते हैं


2
ऐसा लगता है कि ग्रहण भी addOnPageChangeListener की विधि नहीं खोज सकता है, क्या मैं पूछ सकता हूं कि यह किस समर्थन पुस्तकालय से है?
नियॉन वॉज

7
मुझे लगता है कि clearOnPageChangeListeners () का उल्लेख यहां योग्य है, इसलिए कोई भी addOnPageChangeListener () का उपयोग करते समय कई श्रोताओं के साथ समाप्त नहीं होता है।
घड़ी की कल

2
वह भ्रामक है। यह अच्छा होगा अगर वे एक ही वाक्य रचना के साथ रखे और बस इस कॉल या अपडेट किए गए संस्करण के साथ कुछ बदल दिया।
Jay Snayder

41

यह मेरे लिए काम किया:

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

उपयोग ViewPager.addOnPageChangeListener के बजाय ViewPager.setOnPageChangeListener


10

बस अगर किसी को कोटलिन में समाधान की आवश्यकता होती है :

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

आप SimpleOnPageChangeListener नीचे के माध्यम से प्राप्त कर सकते हैं कोड है:

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

प्रश्न पदावनत setOnPageChangeListener फ़ंक्शन के लिए एक विकल्प था ।
प्राथमिक

0
  1. यदि आवश्यकता हो तो एक इंटरफ़ेस बनाएँ;

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

    }

  2. दिखाए गए अनुसार viewpager में हर टुकड़े में इंटरफ़ेस को लागू करें

 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. सूची यह है कि कैसे यू उपयोगकर्ता addOnPageListener है

    व्यूपावर दर्ज करें।

        @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. OnPauseFragment () या onResumeFragment () में अपनी कॉल लागू करें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.