ভিউপিজার সেটোনপেজ চেঞ্জালাইস্টেনার অবনতিহীন


263

আজ আমি সেট করার চেষ্টা করছি ViewPager.setOnPageChangeListenerএবং আমি খুঁজে পেয়েছি যে এটি হ্রাস পেয়েছে।


15
বিটিডব্লিউ, এই পদ্ধতিটি অবচিত করা হয়েছে। পরিবর্তে addOnPageChangeListener (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
দেখে মনে হচ্ছে Eclipse এমনকি addOnPageChangeListener পদ্ধতিটিও সন্ধান করতে পারেনি, আমি জিজ্ঞাসা করতে পারি এটি কোন সমর্থন লাইব্রেরি থেকে এসেছে?
নিয়ন ওয়ার্জ

7
আমি মনে করি ClearOnPageChangeListeners () এর একটি উল্লেখ এখানে উপযুক্ত, সুতরাং addOnPageChangeListener () ব্যবহার করার সময় একাধিক শ্রোতার সমাপ্তি ঘটে না।
ক্লকস্মিত 21

2
এটা বিভ্রান্তিকর। তারা যদি একই সিনট্যাক্সের সাথে রাখে এবং কেবলমাত্র এই কলটি বা কোনও আপডেট সংস্করণ দিয়ে প্রতিস্থাপন করে তবে এটি দুর্দান্ত হবে।
জে স্নায়দার

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. ভিউপ্যাজারের প্রতিটি খণ্ডে যেমন দেখানো হয়েছে তে ইন্টারফেস প্রয়োগ করুন

 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. আপনি কীভাবে অ্যাডঅনপেজলাইজনার ব্যবহারকারী তা তালিকাভুক্ত করুন

    ভিউপেজ.আরডিঅনপেজ চ্যাঞ্জলিস্টনার প্রবেশ করুন (নতুন ভিউপেজ.অনপেজ চ্যাঞ্জলিস্টেনার () current বর্তমান বর্তমান অবস্থান = 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. অন ​​কলস ফ্রেমমেন্ট () বা অন-রেজিউমফ্র্যাগমেন্ট () এ আপনার কলগুলি প্রয়োগ করুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.