【发布时间】:2020-07-04 19:02:52
【问题描述】:
我正在尝试在视图寻呼机的第一个选项卡中实现片段的切换。我尝试了在link 找到的方法,它在第一个选项卡中使用根片段,然后切换子片段。但是,当第二个子片段屏幕旋转发生时,应用程序会切换回第一个子片段,除此之外,这似乎是一种 hack。
我尝试搜索其他方法,但发现了几十个似乎都很混乱的答案。 here 的解释似乎是对的,但我不完全理解。这是该链接的解释和代码:
这种方法是通过覆盖getItem(...) 方法以及每次调用viewPager.getAdapter().notifyDataSetChanged() 时调用的getItemPosition(Object object) 来切换显示在FragmentPagerAdapter 内的片段。例如:
public static class MyPagerAdapter extends FragmentStatePagerAdapter {
// Return a different fragment for position based on additional state tracked in a member variable
@Override
public Fragment getItem(int position) {
// For a given position, return two different potential fragments based on a condition
}
// Force a refresh of the page when a different fragment is displayed
@Override
public int getItemPosition(Object object) {
// this method will be called for every fragment in the ViewPager
if (object instanceof SomePermanantCachedFragment) {
return POSITION_UNCHANGED; // don't force a reload
} else {
// POSITION_NONE means something like: this fragment is no longer valid
// triggering the ViewPager to re-build the instance of this fragment.
return POSITION_NONE;
}
}
}
假设我有 ListFragment 和 DetailFragment 应该在第一个选项卡中切换。
- 我会在哪里打电话给
viewPager.getAdapter().notifyDataSetChanged()? - (...基于成员变量中跟踪的其他状态)我该如何实现?
-
SomePermanantCachedFragment在我的情况下指的是ListFragment?
例如,我也尝试搜索 github,但没有成功...
【问题讨论】:
标签: android android-fragments android-viewpager