ViewPager не возвращает нужный фрагмент - PullRequest
0 голосов
/ 06 октября 2018

Я работаю над простой реализацией ViewPager в Android, но каждый раз, когда я меняю экран, addOnPageChangeListener работает нормально, но я вижу необычные значения в моих журналах внутри getItem моего 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;
        }
    }
}

Фрагмент:

public class OnBoardingSlider extends Fragment {
    View mView;
    int index;
    ImageView img;
    TextView head_text,sub_head_text;

    public static OnBoardingSlider newInstance(int index){
        OnBoardingSlider f = new OnBoardingSlider();
        Bundle args = new Bundle();
        args.putInt("index", index);
        f.setArguments(args);
        return f;
    }

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        mView = inflater.inflate(R.layout.frag_on_boarding_page,container,false);
        return mView;

    }

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        img = mView.findViewById(R.id.onboard_pager_img);
        head_text = mView.findViewById(R.id.head_text);
        sub_head_text = mView.findViewById(R.id.sub_head_text);

        super.onViewCreated(view, savedInstanceState);
        switch (index){
            case 0:
                Log.d("Slider val",""+index);
                img.setImageResource(R.drawable.purpleimage_slider);
                head_text.setText(getString(R.string.ask));
                sub_head_text.setText(getString(R.string.ask_sub_head));

                head_text.setTextColor(ContextCompat.getColor(getActivity(),R.color.purple_head));
                sub_head_text.setTextColor(ContextCompat.getColor(getActivity(),R.color.purple_head_sub));
                break;
            case 1:
                Log.d("Slider val",""+index);
                img.setImageResource(R.drawable.blueimage_slider);
                head_text.setText(getString(R.string.ask));
                sub_head_text.setText(getString(R.string.ask_sub_head));

                head_text.setTextColor(ContextCompat.getColor(getActivity(),R.color.blue_head));
                sub_head_text.setTextColor(ContextCompat.getColor(getActivity(),R.color.blue_head_sub));
                break;
            case 2:
                Log.d("Slider val",""+index);
                img.setImageResource(R.drawable.greenimage_slider);
                head_text.setText(getString(R.string.ask));
                sub_head_text.setText(getString(R.string.ask_sub_head));

                head_text.setTextColor(ContextCompat.getColor(getActivity(),R.color.green_head));
                sub_head_text.setTextColor(ContextCompat.getColor(getActivity(),R.color.green_head_sub));
                break;
            default:
                Log.d("Slider val",""+index);
                img.setImageResource(R.drawable.purpleimage_slider);
                head_text.setText(getString(R.string.ask));
                sub_head_text.setText(getString(R.string.ask_sub_head));

                head_text.setTextColor(ContextCompat.getColor(getActivity(),R.color.purple_head));
                sub_head_text.setTextColor(ContextCompat.getColor(getActivity(),R.color.purple_head_sub));

        }
    }
}

1 Ответ

0 голосов
/ 06 октября 2018

Вы не получаете аргументы после их установки.так что в onCreate

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