1

我在一个Activity里用了四个Fragment,四个Fragment是顺序使用的,当第一个结束后替换为第二个,以此类推。
当手机进行横竖屏切换的时候,不管现在处于第几个Fragment,都会重新加载第一个。有什么方法可以保存当前Fragment的实例呢, 并且在Activity销毁重建后还原状态。

2015-11-11 提问

查看全部 2 个回答

1

已采纳

你看这篇文章里总结的方法可以解决你的问题吗?
如何在Android设备旋转时暂存数据以保护当前的交互状态 一文中总结了以下几种情况:

  • 设备旋转时保存Activity的交互状态: onSaveInstanceState();

  • 设备旋转时保存Fragment的交互状态: setRetainInstance(true);

  • 设备旋转时保存WebView的数据: android:configChanges="keyboardHidden|orientation|screenSize";

  • 设备旋转时保存在自定义View中绘制的图形。

如果Fragment不包含WebView,只是简单的UI View,像是TextView, Button, CheckBox, ImageView... 不建议使用setRetainInstance方法,只需要记住当前fragment的index,然后在设备旋转后根据数据重新实例化一个fragment。因为不包含大量数据,旋转的过程中几乎可以用“无缝切换”来形容。
如果包含WebView还是采用针对WebView的方法(题主的情况)。所以要看情况而定。

1

看了你的问章,已经解决了,我的Fragment里边还有WebView,正好都用上了。谢谢@li21

失踪的使节 · 2015年11月11日

展开评论

你可能感兴趣的

推广链接