ViewPager没有返回正确的片段

时间:2018-10-06 18:02:38

标签: android android-viewpager

我正在使用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;
        }
    }
}

1 个答案:

答案 0 :(得分:1)

设置参数后没有得到参数。所以 在onCreate

 Bundle bundle=getArguments();
 index = bundle.getInt("index");