Only fullscreen opaque activities can request orientation
这个问题发生的必须同时满足三个条件:
(1)你的Activity是透明的或者悬浮在另一个Activity上;
(2)透明Activity限定了横竖屏方向,如下
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"
(3)targetSdkVersion > O(26)
那么在Android8.0的机器上,你的透明的Activity在创建的时候就会报这个异常,再具体点的异常如下:
Caused by: java.lang.IllegalStateException: Only fullscreen opaque activities can request orientation
at android.app.Activity.onCreate(Activity.java:1081)
at android.support.v4.app.SupportActivity.onCreate(ComponentActivity.java:75)
at android.support.v4.app.FragmentActivity.onCreate(FragmentActivity.java:335)
at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:85)
解决方法,一般来说透明的需求是避免不了的,只能从去掉横竖屏下手了,这里提供一个解决方案:你的透明的Activity一般都是在另一个Activity之上的,不可能app上来就整一个透明的Activity,那么方法来了,只要你限制了底下的Activity的横竖屏方向,你会发现你的透明的Activity也不会发生横竖屏切换了。希望能为你们提供帮助。