Android 8.0 Activity报错 "Only fullscreen activities can request orientation"

当三个条件同时满足的时候,系统会抛出"Only fullscreen activities can request orientation"异常。先分别来说说这三个条件都表示什么意思:

ActivityInfo.isFixedOrientation(requestedOrientation) —— 表示判断当前的|Activity是否固定了方向
fullscreen —— 表示Activity是否是透明的或者是否悬浮在Activity上,是透明的或者悬浮在Activity上fullscreen就等于false
appInfo.targetSdkVersion > O —— 表示编译版本号大于26
当以上的三个条件同时满足的时候,系统框架就会抛出异常,那意思我们只能让上面的条件不满足就可以了。如果你要适配8.0以上的版本那么第三个条件肯定是满足的,那么我们就只能从第一个和第二个条件入手,第二个条件是否是透明的activity即<item name="android:windowIsTranslucent">true</item> 设置为true,如果设置为false,就可以使第二个条件不满足,但是这样我们的activity的背景就不是透明的了,所以我们要activity透明,那么这个必须设置true,那么第二个条件也满足。那么我们只能从第一个条件入手即不固定activity的方向,但是这样还是有问题,原本我们的应用的其他界面的都是固定方向的,突然有一个不固定方向,用户体验会不太好。所以如果不是必须使用activity才能实现的功能,建议使用Dialog来实现透明Activity的效果。如果一定要使用透明的Activity并且要适配android 8.0以上,就只能不固定activity的方向才能解决报错问题。
————————————————
版权声明:本文为CSDN博主「LOVE宝」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/LoveDou0816/article/details/79129324

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值