gpt4 book ai didi

java - setRequestedOrientation 上的 IllegalStateException

转载 作者:搜寻专家 更新时间:2023-11-01 09:25:32 27 4
gpt4 key购买 nike

我有一个关于通过调用 setRequestedOrientation 获取 IllegalStateException 的问题。

因此,为了让我们在全局范围内拥有纵向方向,我按以下方式进行:

registerActivityLifecycleCallbacks(new Application.ActivityLifecycleCallbacks() {
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {

// new activity created; force its orientation to portrait
activity.setRequestedOrientation(
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

//disable automatic screen lock
activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

StatusBarUtil.setColor(activity, activity.getResources().getColor(R.color.black));

错误发生在我们假设覆盖 Activity 上。为了使它们看起来像叠加层,我们为它们使用了以下主题:

<style name="Dialog" parent="Theme.AppCompat.Dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:background">@android:color/transparent</item>
<item name="android:windowBackground">@android:color/transparent</item>
</style>

我在 Stackoverflow 上读到,设置以下属性时可能会发生错误:

<item name="android:windowIsFloating">true</item>
<item name="android:windowIsTranslucent">true</item>

所以我删除了它们并推送了一个新的更新,但不幸的是我们仍然遇到同样的错误。

这是in play控制台报出的抛出错误trace:

Caused by: java.lang.IllegalStateException: 
at android.os.Parcel.readException (Parcel.java:1967)
at android.os.Parcel.readException (Parcel.java:1905)
at android.app.IActivityManager$Stub$Proxy.setRequestedOrientation (IActivityManager.java:6186)
at android.app.Activity.setRequestedOrientation (Activity.java:5831)

我不知道这是否重要,但基础覆盖 Activity 本身也在 onCreate 函数中调用以下代码:

getWindow().requestFeature(Window.FEATURE_NO_TITLE);

有人有类似的问题或可以提供帮助吗?

编辑:

似乎错误只发生在安卓版本 8 或更高版本的安卓手机上。举个例子:

  • 三星 Galaxy S7,4096MB 内存,Android 8.0
  • 三星 Galaxy S8,4096MB 内存,Android 8.0
  • LGE V30、4096MB 内存、Android 8.0
  • 三星 Galaxy A3(2017),2048MB 内存,Android 8.0

最佳答案

因此 IllegalStateException 由使用 android 版本 8 及更高版本的手机抛出,因为 Dialog Activity 从父级继承它们的方向,并且您不能以编程方式设置它们的方向。不幸的是,运行 android 版本 8 的模拟器没有抛出这个异常,所以我不得不在真实设备上运行它来解决这个问题。这是我对此有效的解决方案:

        try{
// new activity created; force its orientation to portrait
activity.setRequestedOrientation(
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
catch(Exception ignore){

}

关于java - setRequestedOrientation 上的 IllegalStateException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50976174/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com