Activity动态添加的ragment,旋转屏幕崩掉的问题
2015-09-09 16:36
465 查看
问题:有 一个Activity,activity里面动态的添加了一个Fragment,在竖屏下所有功能都完好,但是当旋转手机屏幕,切换到横屏时,整个界面就崩掉了
注册Activity
Activity原本这样写着
就这样的写法,在横竖屏幕切换的时候崩了。
崩了以后第一时间肯定是思考为什么蹦?
这时候就想起了Activity横竖屏幕切换的时候,生命周期会发生变化,具体是怎么发生变化的这里就不多说了,网上资料很多,自行学习就好。
既然找到了蹦的原因,就找解决方案吧
(1)可以在AndroidManifest中声明Activity时就限制住屏幕方向,不允许旋转。
就是像这样:
(2)在Activity中动态的加入时,对fragment进行判断是否为null,别重复创建和添加
这样就解决这个问题了
注册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();
这样就解决这个问题了
相关文章推荐
- JavaScript 获取当前时间戳的代码
- 创意工厂在XMind6中的妙用
- 用iframe设置代理解决ajax跨域请求问题
- 位运算简介
- 列选主元Guass消元法求解方程组+c语言
- poj 3126 Prime Path
- 背包问题
- 关于定制RadioGroup样式之填坑记,记录而已
- 【bzoj1028】【JSOI2007】【麻将】
- sqlloader数据量大容易中断以及数据出现丢失情况
- OpenCV学习笔记(6)基于 VC+OpenCV+DirectShow 的多个摄像头同步工作
- 新建webklogic数据源激活更改期间出现Cannot load drivaer class:com.sybase.jdbc3.jdbc.SybDriver
- DRAM,SRAM,SDRAM的关系与区别
- chmod的相关操作
- hdu3231 拓扑序
- mysql性能测试(索引)
- Matlab 曲线拟合工具箱 cftool
- Winform 获取Win7 UAC 管理员权限
- 解决secureCRT登陆centOS显示中文乱码
- JavaScript移动端模拟alert()方法