【问题标题】:FragmentPagerAdapter has empty FragmentsFragmentPagerAdapter 有空片段
【发布时间】:2016-07-01 14:11:00
【问题描述】:

这个问题类似于manyotherquestions,它描述了我遇到的同样问题:我有一个 FragmentPagerAdapter 有 5 个项目,在滑动到第三个选项卡/向后滑动后不显示 Fragments .然而,就我而言,我的 ViewPager 不是托管在 Fragment 中,而是直接托管在 Activity 中,因此 getChildFragmentManager() 解决方案显然不适用于此处。

我的活动

public class NotificationListActivity extends AppCompatActivity {

    @BindView(R.id.container)
    ViewPager mViewPager;
    @BindView(R.id.tabs)
    TabLayout tabLayout;
    @BindView(R.id.toolbar)
    Toolbar toolbar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_notification_list);
        ButterKnife.bind(this);

        setSupportActionBar(toolbar);
        mViewPager.setAdapter(new CategoryPagerAdapter(getSupportFragmentManager()));
        tabLayout.setupWithViewPager(mViewPager);
    }
    ...

我的适配器

public class CategoryPagerAdapter extends FragmentPagerAdapter {
    @NonNull
    private final String[] pageTitles;

    @NonNull
    private final Fragment[] fragments;

    public CategoryPagerAdapter(@NonNull FragmentManager fm) {
        super(fm);
        this.pageTitles = // Intialization ommitted for brevity
        this.fragments = // Initialization ommitted for brevity
    }

    @Override
    public Fragment getItem(int position) {
        if (position > fragments.length - 1)
            throw new IllegalArgumentException("<ommitted>");
        return fragments[position];
    }

    @Override
    public int getCount() {
        return pageTitles.length;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        if (position > pageTitles.length - 1)
            throw new IllegalArgumentException("<ommitted>");
        return pageTitles[position];
    }

【问题讨论】:

    标签: java android fragmentpageradapter


    【解决方案1】:

    我通过增加 OffscreenPageLimit 解决了这个问题:

    mViewPager.setOffscreenPageLimit(5);
    

    (我有 5 个标签)

    这并不优雅,但现在解决了问题。我不会接受这个作为答案,因为它不可能是正确的方法。

    【讨论】:

    • 我想插话,因为这解决了我的问题。我们拥有的 viewpager 上的每个 cmets:设置应保留到当前页面任一侧的页面数因此,如果您有 5 个页面,则将其设置为 4 会起作用,因为它是推荐的使用我建议的最低限度。
    猜你喜欢
    • 2013-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-12
    • 2019-12-18
    相关资源
    最近更新 更多