我正在使用android中的ViewPager进行简单实现,但是每次交换屏幕addOnPageChangeListener
都可以正常工作,但是在getItem
的{{1}}内的日志中看到异常值。和页面交换,但是我无法将片段更改为它。并且我的片段FragmentStatePagerAdapter
内部保持不变,并且达到零,因此每次交换Slider val (log value)
时,我都会得到相同的结果。
活动:
Viewpager
片段:
public class OnBoardingActivity extends AppCompatActivity {
.....
.....
static final int ITEMS = 3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_on_boarding);
ButterKnife.bind(this);
StatusBarUtil.setTransparent(this);
StatusBarUtil.setLightMode(this);
initPager();
}
private void initPager() {
sliderAdapter = new SliderAdapter(getSupportFragmentManager());
if(sliderAdapter!=null){
onboard_pager.setAdapter(sliderAdapter);
}
onboard_pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
if(position==0){
indicators.setImageResource(R.drawable.step1_dots);
}
else if(position==1){
indicators.setImageResource(R.drawable.step2_dots);
}else if(position==2){
indicators.setImageResource(R.drawable.step3_dots);
}
}
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
public static class SliderAdapter extends FragmentStatePagerAdapter {
public SliderAdapter(FragmentManager fragmentManager) {
super(fragmentManager);
}
@Override
public Fragment getItem(int position) {
Log.d("OnBoarding","position "+position);
return OnBoardingSlider.newInstance(position);
}
@Override
public int getCount() {
return ITEMS;
}
}
}
答案 0 :(得分:1)
设置参数后没有得到参数。所以
在onCreate
Bundle bundle=getArguments();
index = bundle.getInt("index");