发送到片段

时间:2016-01-22 16:38:22

标签: android android-fragments android-viewpager

我将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;
        }
    }
}

3 个答案:

答案 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菜单中取消绑定位置。