问题描述
由于Miui 11/12使用其自己的暗模式自定义实现,因此使用以下代码会导致ClassCastException 和活动生命周期异常,因为DefaultNightMode和LocalNightMode始终未指定,即-100而不是0或1。
如果有人针对Miui 11/12专门针对小米设备构建了解决方法。请帮我解决这个问题。
使用的代码:
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
this.recreate();
导致的错误:
2020-10-25 07:04:43.626 9167-9167/com.xxxx.xxxxxx E/ActivityInjector: get life cycle exception
java.lang.classCastException: android.os.BinderProxy cannot be cast to android.app.servertransaction.ClientTransaction
解决方法
我自己解决了。经过一个星期的摆弄后,我做到了。
方法如下:
-而不是为每个Activity设置android:forceDarkAllowed =“ false”。
-只需进入values.xml并将其放置在您的AppTheme中
<item name="android:forceDarkAllowed">false</item>
它将要求您创建一个valuesv29.xml。创建它,然后从所有活动中删除forceDarkAllowed =“ false”。
欢迎。 :)
,同样在 jetpack compose 中,只需将行添加到 theme.xml
<item name="android:forceDarkAllowed" tools:targetApi="q">false</item>
这个目标 api 对我来说很好