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

why setCurrentItem() of viewPager works for next page and not for previous page?

我正在使用 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。 它可以向后滑动。

我将 onClick 方法放在 onCreateview 中。

参考选项卡Activity,查看片段初始化时的节号。 (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);
                }
            });