大家好,我有一个阅读应用程序,我建立了一个视图寻呼机,包含三个片段, bookFragment , chapterFragment 和 verseFragment
我想在用户选择一个书籍项目时更新 chapterFragment 和 verseFragment ,但片段UI仍然没有退出,所以我无法执行refreshUI OnPagerSelected。
有什么方法可以做到这一点?
以下是我的适配器:
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
非常感谢!
答案 0 :(得分:1)
如果片段不存在,则在显示时将调用方法onCreateView()
。您可以在此处设置图书的数据
如果片段存在,您可以拨打refreshUI()
我认为您只需在致电fragment != null
时查看refreshUI()
。
答案 1 :(得分:0)
一种简单而肮脏的方法是强制ViewPager创建所有Fragment实例并通过调用
来保留它们viewPager.setOffscreenPageLimit(2);
另一种方法是将所选值保存在SharedPreferences中,然后在显示页面时检索该值。
SharedPreferences settings = getSharedPreferences(SELECTED_BOOK, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putInt("selectedBook", 3);