【发布时间】:2016-04-01 13:50:25
【问题描述】:
好的,所以我需要循环 ViewPager。我很难实施它。现在我已经实现了它并且就圆形滚动而言它工作正常。但我注意到一个问题。即,第一轮滚动片段后不起作用。我有三个片段,里面有一个按钮。按钮在第一轮工作,但当我回到第一页按钮不起作用。 p.s 我使用假页面技术使 viewpager 循环。
这里是代码
mViewPager.setAdapter(new PagerAdapter(getSupportFragmentManager(), this));
//mViewPager.setOnPageChangeListener(new CircularViewPagerHandler(mViewPager));
mViewPager.setCurrentItem(1, false);
mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
if (position == 0) {
mViewPager.setCurrentItem(3, false);
Log.d("TAG",
"Swiped before first page, looping and resetting to last page.");
} else if (position == 4) {
mViewPager.setCurrentItem(1, false);
Log.d("TAG",
"Swiped beyond last page, looping and resetting to first page.");
}
}
@Override
public void onPageScrollStateChanged(int state) {
Log.d("onPageScrollState", "state:" + state);
int currentPage = mViewPager.getCurrentItem();
if(currentPage==1){
imgCenter.setImageResource(R.drawable.take_ride);
imgLeft.setImageResource(R.drawable.give_ride);
imgRight.setImageResource(R.drawable.setting);
}
if(currentPage==2){
imgCenter.setImageResource(R.drawable.setting);
imgRight.setImageResource(R.drawable.take_ride);
imgLeft.setImageResource(R.drawable.give_ride);
}
if (currentPage==3){
imgCenter.setImageResource(R.drawable.give_ride);
imgLeft.setImageResource(R.drawable.take_ride);
imgRight.setImageResource(R.drawable.setting);
}
}
});
这里是 PagerAdapter 类
public class PagerAdapter extends FragmentPagerAdapter {
Context mcontext;
public PagerAdapter(FragmentManager fm, Context context) {
super(fm);
mcontext = context;
}
@Override
public Fragment getItem(int position) {
if (position == 0) {
return new HomeFragment2();
}
else if(position==1){
return new HomeFragment();
}
else if (position == 2) {
return new SettingFragment();
}
else if(position==3){
return new HomeFragment2();
}
else
return new HomeFragment();
}
@Override
public int getCount() {
return 5;
}
}
【问题讨论】:
-
实际上问题出在片段上。片段不起作用,但循环滚动是有效的。只有当我不以循环方式滚动时,片段才有效
标签: android android-viewpager fragment