viewpager setonpagechangelistener deprecated

AndroidAndroid Viewpager

Android Problem Overview


Today I'm trying to set ViewPager.setOnPageChangeListener and I've found out that it's deprecated.

Android Solutions


Solution 1 - Android

ViewPager.setOnPageChangeListener is deprecated now. Need to use ViewPager.addOnPageChangeListener instead.

for example,

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

        }
    });

You can find this Here.

Solution 2 - Android

this worked for me:

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

Solution 3 - Android

Use ViewPager.addOnPageChangeListener instead of ViewPager.setOnPageChangeListener.

Solution 4 - Android

Just in case someone needs the solution in 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.
        }

    })

Solution 5 - Android

You can achieve via SimpleOnPageChangeListener Below is the Code:

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

Solution 6 - Android

  1. Create an interface if need be;

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

    }

  2. Implement Interface in every fragment in viewpager as shown

> 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. List this is how u user the addOnPageListener

    enter 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. Implement your calls in the onPauseFragment() or onResumeFragment()

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionJaydipsinh ZalaView Question on Stackoverflow
Solution 1 - AndroidJaydipsinh ZalaView Answer on Stackoverflow
Solution 2 - Androidkinsley kajivaView Answer on Stackoverflow
Solution 3 - AndroidAeHView Answer on Stackoverflow
Solution 4 - AndroidNoeliaView Answer on Stackoverflow
Solution 5 - AndroidShoeb SiddiqueView Answer on Stackoverflow
Solution 6 - AndroidGoodlifeView Answer on Stackoverflow