问题:有 一个Activity,activity里面动态的添加了一个Fragment,在竖屏下所有功能都完好,但是当旋转手机屏幕,切换到横屏时,整个界面就崩掉了
注册Activity
<activity android:name=".activity.TopicListActivity" >Activity原本这样写着
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_common); fragment = new TopicListFragment(); fragment.setArguments(bundle); getSupportFragmentManager().beginTransaction().replace(R.id.topicfragment,fragment).commit();}就这样的写法,在横竖屏幕切换的时候崩了。
崩了以后第一时间肯定是思考为什么蹦?
这时候就想起了Activity横竖屏幕切换的时候,生命周期会发生变化,具体是怎么发生变化的这里就不多说了,网上资料很多,自行学习就好。
既然找到了蹦的原因,就找解决方案吧
(1)可以在AndroidManifest中声明Activity时就限制住屏幕方向,不允许旋转。
就是像这样:
<activity android:name=".activity.TopicListActivity" android:configChanges="keyboardHidden|orientation" android:screenOrientation="portrait" > </activity>
(2)在Activity中动态的加入时,对fragment进行判断是否为null,别重复创建和添加
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_common); if (fragment==null){ fragment = new TopicListFragment(); } fragment.setArguments(bundle); getSupportFragmentManager().beginTransaction().replace(R.id.topicfragment,fragment).commit();这样就解决这个问题了