繁体   English   中英

如何更新ViewPager片段数据?

[英]How can I update ViewPager fragment data?

您好,我在阅读应用程序上工作的任何人,我都建立了一个包含三个片段的视图分页器, bookFragmentChapterFragmentverseFragment

当用户选择一个书本项目时,我想更新ChapterFragmentverseFragment ,但是片段UI仍然没有退出,因此我无法在OnPagerSelected中进行refreshUI。

有什么办法吗?

以下是我的适配器:

private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
    private int[] title = {R.string.label_book, R.string.label_chapter, R.string.label_verse};

    public ScreenSlidePagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        switch (position) {
            case 0:
                return bookFragment = new SelectionBookFragment();

            case 1:
                return chapterFragment = new SelectionChapterFragment();

            case 2:
                return verseFragment = new SelectionVerseFragment();
        }
        return new Fragment();
    }

    @Override
    public int getCount() {
        return NUM_PAGES;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return getResources().getString(title[position]);
    }
}

当我这样做时,片段UI为空:

Fragment fragment = screenSlidePagerAdapter.getItem(CHOOSER_CHAPTER);
fragment.refreshUI() <-- null

太谢谢了!

如果该片段不存在,则在显示时将调用onCreateView()方法。 您可以在此处设置书籍的数据。
如果该片段存在,则可以调用refreshUI()
我认为您只需要在调用refreshUI()时检查fragment != null

一种简单而肮脏的方法是通过调用以下方法来强制ViewPager创建所有Fragment实例并保留它们:

viewPager.setOffscreenPageLimit(2);

另一种方法是将选定的值保存在SharedPreferences中,然后在显示Page时检索该值。

SharedPreferences settings = getSharedPreferences(SELECTED_BOOK, 0);
  SharedPreferences.Editor editor = settings.edit();
  editor.putInt("selectedBook", 3);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM