Android 在 ViewPager 上保留片段
Android retain fragments on ViewPager
在我的 activity 中,我有 ViewPager
,它为两个 fragments
实现,在这些片段中,我有一些弹出窗口,例如在旋转设备上弹出窗口再次启动的对话框,这个弹出窗口在 createview
上,在 运行 parent activity 之后,我从服务器获取了一些数据,如何保留这些片段,以便在更改设备方向时不再加载?
Activity:
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);
}
在片段的 onCreate 中使用 setRetainIntanse(true);
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Retain this fragment across configuration changes.
setRetainInstance(true);
}
参考here
如果您不为横向模式使用不同的布局,您可以添加标签
android:configChanges="orientation|screenSize|keyboardHidden"
到您的清单中的 Activity。这告诉系统您自己处理配置更改。
在我的 activity 中,我有 ViewPager
,它为两个 fragments
实现,在这些片段中,我有一些弹出窗口,例如在旋转设备上弹出窗口再次启动的对话框,这个弹出窗口在 createview
上,在 运行 parent activity 之后,我从服务器获取了一些数据,如何保留这些片段,以便在更改设备方向时不再加载?
Activity:
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);
}
在片段的 onCreate 中使用 setRetainIntanse(true);
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Retain this fragment across configuration changes.
setRetainInstance(true);
}
参考here
如果您不为横向模式使用不同的布局,您可以添加标签
android:configChanges="orientation|screenSize|keyboardHidden"
到您的清单中的 Activity。这告诉系统您自己处理配置更改。