我正在尝试开发基于标签的应用程序,我正在使用FragmentPageAdapter来做到这一点。我的扩展FragmentPageAdapter的类是根据Android文档的静态类。我的问题是在getItem()
方法中我只能创建新的Fragment,这意味着旧的片段将被销毁。
我希望将我的片段保留在整个应用程序生命周期中,所以我决定声明本地静态成员,这些成员将始终关注我的片段。
这是代码:
static Fragment mapFragment = new MapFragment();
static Fragment listFragment = new VehiclesListFragment();
...
@Override
public Fragment getItem(int position) {
if(position == 0 && listFragment != null) {
return listFragment;
} else if(position == 0) {
listFragment = new VehiclesListFragment();
return listFragment;
} else if(position == 1 && mapFragment != null) {
return mapFragment;
} else if(position == 1) {
mapFragment = new MapFragment();
return mapFragment;
}
return null;
}
我清除每个片段中的静态成员:
@Override
public void onDetach() {
super.onDetach();
MainActivity.mapFragment = null;
}
我的问题是:将Fragment声明为静态安全吗?是不是反对android desing哲学?每次用户切换选项卡时,是否有更好的解决方案可以将Fragment保留在内存中而无需创建新的?提前谢谢。
修改 我在这里找到了答案:http://alexfu.github.io/blog/2013/04/22/retaining-fragments-in-fragmentpageradapter/