ViewPager切换FragmentPagerAdapter

Gab*_*ner 4 android android-fragments android-viewpager

我有一个ViewPager由一个人填充的FragmentPagerAdapter.我想从第一个适配器换另一个.问题是之前加载的所有页面(在使用第一个适配器时)仍然是旧的.

我查看了源代码FragmentPagerAdapter并猜测问题是否因为instatiateItem()实现而发生.使用具有位置和conatiner id的标签,该方法检查Fragment该位置是否已存在a .如果有Fragment这个标签,则附上.设置新适配器时,容器ID和位置不会更改,因此它会找到旧Fragment的适配器.

你知道一种删除所有旧片段的方法吗?

Gab*_*ner 10

我意识到Fragment标签使用的是id,getItemId()而不是位置.为了解决我的问题,我已经覆盖getItemId()并在不同的FragmentPagerAdapters中使用完全不同的ID .

@Override
public long getItemId(int position) {
    return mPagerId*100+position;
}
Run Code Online (Sandbox Code Playgroud)

mPagerId是在构造函数中分配的唯一整数.如果您有超过100页,则应将1000替换为1000.