当targetSdk升级到29之后,设置了透明主题的Activi

2022-03-09  本文已影响0人  LYX_8716

升级sdk是发现,当sdk升级到29时,设置了透明主题的Activity会崩溃的问题,经查正发现是在sdk大于等于27之后,透明主题的Activity如果设置了强制横竖屏就会崩溃,网上搜索发现,透明的Activity的方向会默认继承其上一层页面的方向。

现已查明,此为Android 8.0.0和Android 8.1.0的bug(Android 9以上版本已修改)。

如何产生此bug ?举例如下:

比如对Activity设置了主题:android:theme="@android:style/Theme.Translucent.NoTitleBar"

又设置了固定方向:android:screenOrientation="portrait"

或者在代码中设置的固定方向:setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

此时,就会报crash :

java.lang.IllegalStateException:Only fullscreen activities can request orientation

解决方案:

第一种:让主题透明Translucent和Activity固定方向不要同时存在。

第二种:设置targetSdk <27

上一篇下一篇

猜你喜欢

热点阅读