Android 常见问题处理程序员

解决横竖屏切换导致自定义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()
上一篇 下一篇

猜你喜欢

热点阅读