亲们好,求帮助高手,改了好长时间也没搞定这个问题,图上的四幅图依次为竖屏切横屏,再次切竖屏,再切横屏的效果,当再次切换竖屏的时候数据就没有显示了。本人设置了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中用两个布局完成。