关于安卓配置信息发生变化的应对方法

当配置信息发生变化,如横屏竖屏,更改语言配置等,Activity会重新执行onCreate()方法。重新执行onCreate()方法的话,可能会发生我们不想看到的结果。

比如说:当activity托管了fragment的话,重新执行onCreate()方法前添加过的fragment,即使在重新执行onCreate()方法前执行了hide()方法,当重新执行onCreate()方法后,添加过的fragment也都会显示出来,出现重叠效果。

如果不希望重新执行onCreate()方法或者说重新执行onCreate()方法后仍然不会发生上面所说的情况的话有以下几种方法供选择:

1.AndroidManifest.xml文件:在相应的activity中添加android:configChanges="keyboardHidden|orientation|screenSize"配置信息,

配置这个属性的话,在横屏竖屏的时候就不会重新调用onCreate()方法了,只是会执行onConfigurationChanged方法。

PS: "keyboardHidden”属性不加貌似也没有什么影响。

但是这种做法还是有一定局限性的,比如更改设备语言的话还是会发生上面所说的效果。

2.在AndroidManifest.xml的activity(需要禁止转向的activity)配置中加入android:screenOrientation=”portrait”属性即可(landscape是横向,portrait是纵向)。

这样的做法有着和上面同样的缺陷。

3.复写activity的onSaveInstanceState方法,如果该activity托管了fragment的话不要复写super方法,否则添加过fragment会依然存在,造成画面重叠。

4.添加fragment的时候:transaction.add(R.id.content, messageFragment,"message")方法的第三个参数给出tag标记,这样在重启后依然可以通过findFragmentByTag("message")去拿fragment,进行相应的操作。


PS:出于兴趣爱好,刚开始尝试自己做安卓程序,不会,不懂,要学的东西太多太多了,还请大家多多 关照。谢谢!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值