Android中横竖屏切换加载不同布局导致fragment数据丢失的问题

移动开发 码拜 9年前 (2016-03-30) 3005次浏览
Android中横竖屏切换加载不同布局导致fragment数据丢失的问题
亲们好,求帮助高手,改了好长时间也没搞定这个问题,图上的四幅图依次为竖屏切横屏,再次切竖屏,再切横屏的效果,当再次切换竖屏的时候数据就没有显示了。本人设置了android:configChanges=”screenSize|orientation|keyboardHidden”,所以在横竖切换的时候只会执行
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
//横屏
setContentView(R.layout.layout_rankingstatistics_land);
initDefineLand();
addListenerLand();

} else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
//竖屏
setContentView(R.layout.layout_rankingstatistics);
initDefine();
initOperation();
}
}
竖屏的总布局是一个viewpager上加载了4个fragment,而横屏是2个viewpager上各加载2个fragment!加载fragment是在主的activity中执行的,数据加载都是在fragment中执行,本人知道有些人要说设置这个activity让他横竖屏切换的时候重新执行生命周期,这个行不通,原因是我们这个框架特殊。
在每次重新初始化布局的时候本人都有去重新new Fragment!本人把生命周期打印出来的时候,只是在第一次切换的时候执行了fragment的生命周期,后面都不会执行了,然后本人用广播通知到fragment去重新用adapter加载数据,走debug的时候,数据什么都有,但是就是不显示出来!实在是搞不定啊,求高手帮本人指点迷津。由衷感谢了!

解决方案

20

你何必不把实例化的fragment保存起来,然后直接调用试试,不用new

30

用map存进去,你没做过fragment。tag?

20

重写Fragment的onSaveInstanceState()方法

20

切换的时候看fragment能否存在,没存在就new 一个放到map里面

10

用两个act去实现试试,不要在一个 act中用两个布局完成。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明Android中横竖屏切换加载不同布局导致fragment数据丢失的问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)