为什么 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);
}
});
我正在使用 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);
}
});