本文主要是介绍关于安卓配置信息发生变化的应对方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
当配置信息发生变化,如横屏竖屏,更改语言配置等,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:出于兴趣爱好,刚开始尝试自己做安卓程序,不会,不懂,要学的东西太多太多了,还请大家多多 关照。谢谢!
这篇关于关于安卓配置信息发生变化的应对方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!