viewpager setonpagechangelistener 지원 중단


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 ()를 사용할 때 여러 리스너로 끝나지 않습니다.
clocksmith

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

누군가 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 (new 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.