[英]How can I update ViewPager fragment data?
您好,我在阅读应用程序上工作的任何人,我都建立了一个包含三个片段的视图分页器, bookFragment , ChapterFragment和verseFragment
当用户选择一个书本项目时,我想更新ChapterFragment和verseFragment ,但是片段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.