为什么viewPager的setCurrentItem()适用于下一页而不适用于上一页?

时间:2016-10-14 12:38:05

标签: android android-viewpager viewpage android-tabbed-activity

我正在使用Android Studio的Tabbed Activity。

我在刷卡的页面之间移动,但我添加了2个视图,可以通过onclick方法移动下一个和上一个,但它不会再回到下一步。

     nextAbitudini.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        //it works
                        mViewPager.setCurrentItem(getArguments().getInt(ARG_SECTION_NUMBER));
                    }
                });

     backAbitudini.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                       //it doesn't work
                       mViewPager.setCurrentItem(getArguments().getInt(ARG_SECTION_NUMBER)-1);
                    }
                });

我正在使用FragmentPagerAdapter。 它可以向后滑动。

我在onCreateview中放了onClick方法。

1 个答案:

答案 0 :(得分:1)

参考选项卡式活动,在片段初始化时查看部分编号。 (sectionNumber = position + 1)。

    @Override
    public Fragment getItem(int position) {
        // getItem is called to instantiate the fragment for the given page.
        // Return a PlaceholderFragment (defined as a static inner class below).
        return PlaceholderFragment.newInstance(position + 1);
    }

因此,ARG_SECTION_NUMBER-1指的是当前片段的位置,ARG_SECTION_NUMBER-2指向前一个,ARG_SECTION_NUMBER指向下一个。

因此,您的代码应该是这样的:

 nextAbitudini.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    //it works
                    mViewPager.setCurrentItem(getArguments().getInt(ARG_SECTION_NUMBER));
                }
            });

 backAbitudini.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                   //it doesn't work
                   mViewPager.setCurrentItem(getArguments().getInt(ARG_SECTION_NUMBER)-2);
                }
            });