You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android11/MIUI12.5.9中material_dynamic_neutral10资源异常求助

Android 11/MIUI 12.5.9 下Material动态颜色资源引发的Activity填充失败问题

在Android 11/MIUI 12.5.9设备上,Activity填充失败,根源是XML中Button控件内的android:textColor="@color/material_dynamic_neutral10"代码行,触发UnsupportedOperationException: Can't convert to ComplexColor异常。项目依赖implementation 'com.google.android.material:material:1.9.0',该问题仅出现在Android 11/MIUI 12.5.9设备,Android13/Nothing Phone、Android12/MIUI等设备均正常。

XML引用引发的错误堆栈

Process: org.example.myapp, PID: 8656
java.lang.RuntimeException: Unable to start activity ComponentInfo{org.example.myapp/org.example.myapp.SettingsActivity}: android.view.InflateException: Binary XML file line #164 in org.example.myapp:layout/activity_settings: Binary XML file line #164 in org.example.myapp:layout/activity_settings: Error inflating class Button
  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3521)
  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3693)
  at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
  at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
  at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2135)
  at android.os.Handler.dispatchMessage(Handler.java:106)
  at android.os.Looper.loop(Looper.java:236)
  at android.app.ActivityThread.main(ActivityThread.java:8059)
  at java.lang.reflect.Method.invoke(Native Method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:656)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:967)
Caused by: android.view.InflateException: Binary XML file line #164 in org.example.myapp:layout/activity_settings: Binary XML file line #164 in org.example.myapp:layout/activity_settings: Error inflating class Button
Caused by: android.view.InflateException: Binary XML file line #164 in org.example.myapp:layout/activity_settings: Error inflating class Button
Caused by: java.lang.UnsupportedOperationException: Can't convert to ComplexColor: type=0x1
  at android.content.res.ResourcesImpl.loadComplexColorForCookie(ResourcesImpl.java:1200)
  at android.content.res.ResourcesImpl.loadComplexColorFromName(ResourcesImpl.java:1055)
  at android.content.res.ResourcesImpl.loadColorStateList(ResourcesImpl.java:1137)
  at android.content.res.Resources.loadColorStateList(Resources.java:1156)
  at android.content.res.TypedArray.getColorStateList(TypedArray.java:602)
  at android.view.View.<init>(View.java:5914)
  at android.widget.TextView.<init>(TextView.java:996)
  at android.widget.Button.<init>(Button.java:166)
  at android.widget.Button.<init>(Button.java:141)
  at androidx.appcompat.widget.AppCompatButton.<init>(AppCompatButton.java:81)
  at com.google.android.material.button.MaterialButton.<init>(MaterialButton.java:228)
  at com.google.android.material.button.MaterialButton.<init>(MaterialButton.java:224)
  at com.google.android.material.theme.MaterialComponentsViewInflater.createButton(MaterialComponentsViewInflater.java:43)
  at androidx.appcompat.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:156)
  at androidx.appcompat.app.AppCompatDelegateImpl.createView(AppCompatDelegateImpl.java:1678)
  at androidx.appcompat.app.AppCompatDelegateImpl.onCreateView(AppCompatDelegateImpl.java:1729)
  at android.view.LayoutInflater.tryCreateView(LayoutInflater.java:1063)
  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:999)
  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:963)
  at android.view.LayoutInflater.rInflate(LayoutInflater.java:1125)
  at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1086)
  at android.view.LayoutInflater.rInflate(LayoutInflater.java:1128)
  at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1086)
  at android.view.LayoutInflater.inflate(LayoutInflater.java:684)
  at android.view.LayoutInflater.inflate(LayoutInflater.java:536)
  at org.example.myapp.databinding.ActivitySettingsBinding.inflate(ActivitySettingsBinding.java:142)
  at org.example.myapp.databinding.ActivitySettingsBinding.inflate(ActivitySettingsBinding.java:136)
  at org.example.myapp.SettingsActivity$binding$2.invoke(SettingsActivity.kt:23)
  at org.example.myapp.SettingsActivity$binding$2.invoke(SettingsActivity.kt:23)
  at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
  at org.example.myapp.SettingsActivity.getBinding(SettingsActivity.kt:23)
  at org.example.myapp.SettingsActivity.onCreate(SettingsActivity.kt:28)
  at android.app.Activity.performCreate(Activity.java:8157)
  at android.app.Activity.performCreate(Activity.java:8129)
  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1310)
  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3494)
  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3693)
  at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
  at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
  at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2135)
  at android.os.Handler.dispatchMessage(Handler.java:106)
  at android.os.Looper.loop(Looper.java:236)
  at android.app.ActivityThread.main(ActivityThread.java:8059)
  at java.lang.reflect.Method.invoke(Native Method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:656)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:967)

代码获取资源的尝试及错误

尝试通过代码获取该资源,先定义资源ID:val resId = com.google.android.material.R.color.material_dynamic_neutral10,以下三种方式均抛出android.content.res.Resources$NotFoundException异常:

  • button.resources.getColor(resId, context.theme)
  • androidx.appcompat.view.ContextThemeWrapper(context, context.theme).getColor(resId)
  • ContextCompat.getColor(context, resId)

对应的错误堆栈:

java.lang.RuntimeException: Unable to start activity ComponentInfo{org.example.myapp/org.example.myapp.SettingsActivity}: android.content.res.Resources$NotFoundException: Resource ID #0x7f06021a
  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3521)
  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3693)
  at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
  at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
  at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2135)
  at android.os.Handler.dispatchMessage(Handler.java:106)
  at android.os.Looper.loop(Looper.java:236)
  at android.app.ActivityThread.main(ActivityThread.java:8059)
  at java.lang.reflect.Method.invoke(Native Method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:656)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:967)
Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f06021a
  at android.content.res.ResourcesImpl.getValue(ResourcesImpl.java:239)
  at android.content.res.MiuiResourcesImpl.getValue(MiuiResourcesImpl.java:96)
  at android.content.res.Resources.getColor(Resources.java:1076)
  at android.content.Context.getColor(Context.java:686)
  at androidx.core.content.ContextCompat$Api23Impl.getColor(ContextCompat.java:1034)
  at androidx.core.content.ContextCompat.getColor(ContextCompat.java:578)
  at org.example.myapp.ui.UKt.setColors(U.kt:60)
  at org.example.myapp.ui.UKt.setColors$default(U.kt:55)
  at org.example.myapp.SettingsActivity.onCreate(SettingsActivity.kt:78)
  at android.app.Activity.performCreate(Activity.java:8157)
  at android.app.Activity.performCreate(Activity.java:8129)
  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1310)
  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3494)

核心疑问

XML引用时提示ComplexColor转换错误,但实际推测是资源找不到。目前可以手动指定#191C1E解决,但希望找到更合理的方案。请问这四种尝试(XML引用+三种代码方式)存在哪些根本性问题?


内容的提问来源于stack exchange,提问作者multistackdeveloper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 18:35:56