在我的活動中我有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」到你的活動清單 –