viewpager setonpagecheachistener không dùng nữa


263

Hôm nay tôi đang cố gắng thiết lập ViewPager.setOnPageChangeListenervà tôi đã phát hiện ra rằng nó không được chấp nhận.


15
btw, Phương pháp này không được chấp nhận. Sử dụng addOnPageChangeListener (OnPageChangeListener) và removeOnPageChangeListener (OnPageChangeListener) thay thế. , là từ tài liệu
Blackbelt

Câu trả lời:


586

ViewPager.setOnPageChangeListenerbây giờ không được dùng nữa Cần sử dụng ViewPager.addOnPageChangeListenerthay thế.

ví dụ,

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

        }
    });

Bạn có thể tìm thấy ở đây.


2
Có vẻ như Eclipse thậm chí không thể tìm thấy phương thức addOnPageChangeListener, tôi có thể hỏi thư viện hỗ trợ này là từ đâu không?
Chiến tranh neon

7
Tôi nghĩ rằng một đề cập đến ClearOnPageChangeListener () là xứng đáng ở đây, vì vậy người ta không kết thúc với nhiều người nghe khi sử dụng addOnPageChangeListener ().
thợ đồng hồ

2
Điều đó thật khó hiểu. Sẽ thật tuyệt nếu họ giữ cùng một cú pháp và chỉ cần thay thế cuộc gọi này hoặc một cái gì đó bằng phiên bản cập nhật.
Jay Snayder

41

điều này làm việc cho tôi:

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

Sử dụng ViewPager.addOnPageChangeListener thay vì ViewPager.setOnPageChangeListener .


10

Chỉ trong trường hợp ai đó cần giải pháp trong 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

Bạn có thể đạt được thông qua SimpleOnPageChangeListener Dưới đây là Mã:

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

Câu hỏi là một thay thế cho hàm setOnPageChangeListener không dùng nữa .
Tiểu học

0
  1. Tạo một giao diện nếu cần;

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

    }

  2. Triển khai Giao diện trong mọi phân đoạn trong chế độ xem như được hiển thị

 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. Liệt kê đây là cách bạn sử dụng addOnPageListener

    nhập viewPager.addOnPageChangeListener (new ViewPager.OnPageChangeListener () {int currentPocation = 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. Thực hiện các cuộc gọi của bạn trong onPauseFragment () hoặc onResumeFragment ()

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.