在我的活动中我有ViewPager
这实现了两个fragments
,在这些片段中我有一些弹出窗口,例如对话框,在旋转设备弹出窗口再次启动时,弹出窗口在createview
上,从服务器获取一些数据,我如何保留这些碎片,以便在更改设备方向时再次加载?Android保留片段在ViewPager
活动:
private void setupViewPager(ViewPager viewPager) {
adapter = new RegisterViewPagerAdapter(getSupportFragmentManager());
//adapter.addFragment(new FragmentEmpty());
adapter.addFragment(FragmentCheckValidationCode.getInstance());
adapter.addFragment(FragmentRegisterPhoneNumber.getInstance());
viewPager.setOffscreenPageLimit(1);
viewPager.setAdapter(adapter);
registerPages.setCurrentItem(1);
registerPages.setPageMargin(50);
registerPages.setScrollDurationFactor(5);
}
片段:
public static FragmentCheckValidationCode getInstance() {
if (instance == null) {
instance = new FragmentCheckValidationCode();
}
return instance;
}
FragmentCheckValidationCode:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//@formatter:off
activity = getActivity();
context = getActivity().getBaseContext();
//@formatter:on
setRetainInstance(true);
}
使用FragmentPagerAdapter而不是FragmentStatePagerAdapter。这会将所有片段加载到内存中。对于保留实例,请参阅@SaravInferns回答 –
@NinoHandler我将'FragmentPagerAdapter'更改为'FragmentStatePagerAdapter'并将'setRetainInstance(true);'添加到'onCreate'中,片段的对话框再次加载 –
您是否使用不同的横向布局?如果不是,你可以添加 android:configChanges =“orientation | screenSize | keyboardHidden”到你的活动清单 –