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

升级Android Studio Hedgehog后TextView加载InflateException问题

升级Android Studio Hedgehog后InflateException问题排查

问题描述

将Android Studio升级到Hedgehog版本后,Activity在onCreate方法调用setContentView时触发了之前未出现过的InflateException。移除布局中TextView的android:textColor="?attr/colorOnBackground"属性后,TextView可正常加载,且已执行过Invalidate Caches and Restart操作。

错误日志

FATAL EXCEPTION: main
Process: de. myapp.myapp_1, PID: 5888
    java.lang.RuntimeException: Unable to start activity  ComponentInfo{de.myapp.myapp_1/de. myapp.myapp_1.act.MyAppActivity}: android.view.InflateException: Binary XML file line #111 in de. myapp.myapp_1:layout/activity_myappmain: Binary XML file line #111 in de. myapp.myapp_1:layout/activity_myappmain: Error inflating class TextView
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3449)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3601)
    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:2066)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:223)
    at android.app.ActivityThread.main(ActivityThread.java:7656)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
Caused by: android.view.InflateException: Binary XML file line #111 in de. myapp.myapp_1:layout/activity_myappmain: Binary XML file line #111 in de. myapp.myapp_1:layout/activity_myappmain: Error inflating class TextView
Caused by: android.view.InflateException: Binary XML file line #111 in de. myapp.myapp_1:layout/activity_myappmain: Error inflating class TextView
Caused by: java.lang.UnsupportedOperationException: Failed to resolve attribute at index 5: TypedValue{t=0x2/d=0x7f04010f a=-1}
    at android.content.res.TypedArray.getColorStateList(TypedArray.java:597)
    at android.widget.TextView.readTextAppearance(TextView.java:3989)
    at android.widget.TextView.<init>(TextView.java:1089)
    at android.widget.TextView.<init>(TextView.java:990)
    at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:113)
    at androidx.appcompat.widget.AppCompatTextView.<init>(AppCompatTextView.java:108)
    at androidx.appcompat.app.AppCompatViewInflater.createTextView(AppCompatViewInflater.java:228)
    at androidx.appcompat.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:148)
    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:1059)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:995)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:959)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:1121)
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1082)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:1124)
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1082)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:680)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:532)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:479)
    at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:775)
    at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:197)
    at de. myapp.myapp_1.act.MyAppActivity.onCreate(MyAppActivity.java:258)
    at android.app.Activity.performCreate(Activity.java:7994)
    at android.app.Activity.performCreate(Activity.java:7978)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1309)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3422)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3601)
    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:2066)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:223)
    at android.app.ActivityThread.main(ActivityThread.java:7656)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)

对应TextView XML代码

<TextView
    android:id="@+id/tvTestFunc"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:clickable="false"
    android:gravity="start"
    android:minHeight="64sp"
    android:text="tvFuncTest"
    android:textColor="?attr/colorOnBackground"
    android:typeface="normal" />

问题根源(Hedgehog版本相关变更)

Android Studio Hedgehog对应的Android Gradle Plugin(AGP)版本为8.2,其中几个关键变更可能导致该问题:

  • 主题属性解析严格性提升:旧版本AGP/Android系统会对未定义的主题属性进行静默 fallback(比如使用系统默认值),而AGP 8.2会直接抛出异常,明确提示属性未找到。
  • 主题继承检查强化:如果Activity主题未正确继承Theme.MaterialComponents.*或Theme.AppCompat.*这类标准主题,Hedgehog版本会更严格地校验属性存在性,而旧版本可能忽略该问题。
  • 资源编译优化:Hedgehog的资源编译流程做了优化,对未定义属性的引用会在运行时更早触发错误,而非被系统兼容处理。

解决方案

  1. 修正主题继承:确保Activity使用的主题继承自标准AppCompat或Material Components主题,比如:
<style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
    <!-- 其他自定义属性 -->
</style>
  1. 显式定义缺失属性:如果使用自定义主题,在主题中显式添加colorOnBackground属性:
<style name="MyCustomTheme" parent="Theme.AppCompat.Light">
    <item name="colorOnBackground">@color/your_desired_color</item>
</style>
  1. 替换为具体颜色(不推荐):临时方案可将?attr/colorOnBackground替换为具体颜色值,但会失去主题适配能力,不建议长期使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 00:27:33