【发布时间】:2015-07-07 22:55:43
【问题描述】:
假设我有一个带有多个包含位图的片段的 viewpager。我使用setOffScreenLimit(numberOfPagesInViewPager) 来确保片段随时可用(这是我的应用程序的要求)。很明显,我拥有的片段越多,我将使用的内存就越多,因为片段内部的位图和片段都保存在内存中。
现在,假设这些片段都显示相同的内容,因此拥有相同的位图。
是否可以只创建一个片段并在视图页面中为所有页面重用它(从而将内存占用减少到 1 个片段)?
在代码中我正在考虑这样的事情:
public class MyAdapter extends FragmentPagerAdapter {
private MyFragment mFragment;
public MyAdapter(FragmentManager fragmentManager) {
super(fragmentManager);
mFragment = MyFragment.newInstance();
}
@Override
public Fragment getItem(int position) {
// Reuse mFragment for all pages in the viewpager
return mFragment;
}
}
但是这种方法不起作用,因为我遇到了这种类型的错误:
java.lang.IllegalStateException: Can't change tag of fragment MyFragment{4259a4d0 id=0x7f0a0074 android:switcher:2131361908:0}: was android:switcher:2131361908:0 now android:switcher:2131361908:1
【问题讨论】:
标签: android android-fragments android-viewpager