Viewpager setonpagechangelistener已弃用

今天我试图设置ViewPager.setOnPageChangeListener,我发现它已被弃用。

91552 次浏览

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


}
});

你可以找到这个这里。

你可以通过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);

使用ViewPager.addOnPageChangeListener代替ViewPager.setOnPageChangeListener

这招对我很管用:

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

以防有人需要芬兰湾的科特林中的解决方案:

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.
}


})
  1. 如果需要,创建一个接口;

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

    } < / p >

  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

    < p >输入:viewpage。addOnPageChangeListener(new viewpage . 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()