解决横竖屏切换导致自定义View切换Fragment失败
2018-07-25 本文已影响41人
饮水思源为名
问题:
自定义的BottomSelectView,在切换横竖屏后,底部选择器点击后Fragment不切换,失去效果。
解决办法:
在manifest中设置该Activity的configChanges为
android:configChanges="screenSize|keyboardHidden|orientation",
这样当横竖屏切换时,Activity的状态也没有改变。
1、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次
2、设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次
3、设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法
横竖屏知识:
// 设置横屏
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
//设置竖屏
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
/**
*系统中定义: int ORIENTATION_PORTRAIT = 1; 竖屏
*系统中定义: int ORIENTATION_LANDSCAPE = 2; 横屏
*/
//获取屏幕的方向 ,数值1表示竖屏,数值2表示横屏
int screenNum = getResources().getConfiguration().orientation;
//横竖屏切换的生命周期
onPause()
onSaveInstanceState(Bundle outState)
onStop()
onDestory()
onCreate()
onStart()
onResume()