ไม่สนับสนุนการดู


263

วันนี้ฉันพยายามที่จะตั้งค่าViewPager.setOnPageChangeListenerและฉันพบว่ามันเลิกใช้แล้ว


15
btw วิธีนี้เลิกใช้แล้ว ใช้ addOnPageChangeListener (OnPageChangeListener) และ removeOnPageChangeListener (OnPageChangeListener) แทน , มาจากเอกสารประกอบ
Blackbelt

คำตอบ:


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 ได้ฉันขอถามว่ามันมาจากไลบรารี่อะไรบ้าง?
Neon Warge

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


10

ในกรณีที่มีคนต้องการวิธีแก้ปัญหาใน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

คุณสามารถบรรลุผลผ่านทาง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

    ป้อน viewPager.addOnPageChangeListener (ใหม่ 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. ใช้การโทรของคุณใน onPauseFragment () หรือ onResumeFragment ()

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.