我将ViewPager的位置发送到片段State_Pager,然后在屏幕上显示它们。但是,我遇到的问题是当我在列表中滑动时。有三个页面,在启动时屏幕将显示0,1,2。但是从2向后滑动会产生2,1,2而不是2,1,0。值得注意的是标题总是正确的。< / p>
我尝试用ViewPager.getCurrentItem()替换位置并将其打包到片段中,但同样有用。
public static class VehicleModePageAdapter extends FragmentPagerAdapter {
public VehicleModePageAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return State_Pager.newInstance(position);
}
@Override
public int getCount() {
return mNumModes;
}
@Override
public CharSequence getPageTitle(int position) {
switch (mPageType) {
case 0:
case 3:
return "Title " + position;
default:
return null;
}
}
}
答案 0 :(得分:1)
@Override
public CharSequence getPageTitle(int position) {
switch (mPageType) {
case 0:
case 1:
case 2:
return "Title " + position;
default:
return null;
}
}
答案 1 :(得分:0)
这项工作对我而言。我创建了一个片段列表和一个标题列表,这样我就可以按位置控制每个视图,而且向左滚动也没有问题。
public static class VehicleModePageAdapter extends FragmentPagerAdapter {
private final List<Fragment> mFragments = new ArrayList<>();
private final List<String> mFragmentTitles = new ArrayList<>();
public VehicleModePageAdapter(FragmentManager fm){ super(fm); }
public void addFragment(Fragment fragment, String title) {
mFragments.add(fragment);
mFragmentTitles.add(title);
}
@Override
public Fragment getItem(int position)
{
mFragments.get(position);
}
@Override
public int getCount()
{
return mFragments.size();
}
@Override
public CharSequence getPageTitle(int position)
{
return mFragmentTitles.get(position);
}
}
您可以像这样填充PagerAdapter。
private void setupViewPager(ViewPager viewPager) {
VehicleModePageAdapter adapter = new VehicleModePageAdapter(getSupportFragmentManager());
adapter.addFragment(new FragmentVehicle(), "Category 1");
adapter.addFragment(new FragmentVehicle(), "Category 2");
adapter.addFragment(new FragmentVehicle(), "Category 3");
viewPager.setAdapter(adapter);
}
答案 2 :(得分:0)
所以我发现问题是。当我创建片段State_Pager时,当我应该在OnCreateView中取消绑定时,我在OnCreate菜单中取消绑定位置。