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

Android改用MaterialButton报Error inflating class <unknown>错误

崩溃根因

这个Error inflating class <unknown>本质是MaterialButton控件初始化失败,和你贴的适配器构造代码本身无关——报错定位到适配器,只是因为RecyclerView在onCreateViewHolder流程中加载item布局,崩溃刚好落在这个调用链上。
高频触发原因共两类:

  • 加载布局用的Context没有使用Theme.MaterialComponents系列主题。所有Material组件要求依附的上下文必须匹配Material主题,否则控件构造阶段直接抛异常
  • 直接通过android:background属性给MaterialButton传入自定义drawable/覆盖样式。MaterialButton默认用内部的MaterialShapeDrawable实现背景逻辑,直接替换原生background属性会打破内部状态管理、绘制逻辑,触发初始化崩溃。
解决方案

按以下顺序排查修复:

  1. 检查App/对应加载该布局的Activity使用的主题,父类必须是MaterialComponents系列,示例:
    <style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
        <!-- 其余自定义主题属性 -->
    </style>
    
    不想全局替换主题的话,可以给MaterialButton单独指定主题:
    <com.google.android.material.button.MaterialButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:theme="@style/Theme.MaterialComponents.Light"
        />
    
  2. 不要用android:background给MaterialButton设置自定义样式,改用组件自带属性实现效果:
    • 圆角、描边、填充色分别用app:cornerRadius、app:strokeColor、app:strokeWidth、app:backgroundTint配置
    • 需要自定义形状的话,用app:shapeAppearance关联自定义shape样式,不要直接传drawable
    • 必须用自定义drawable做背景的话,两种选择:要么把material依赖升级到1.4.0及以上版本(该版本后才正式支持android:background属性),要么换回AppCompatButton使用
  3. 确认适配器里inflate item布局传入的Context是当前Activity实例,不要传Application级别的Context——Application上下文没有绑定页面主题配置,会导致Material控件拿不到需要的主题属性,初始化失败。
问题相关报错信息

报错指向代码段

public RecycleViewCustomAdapter(Context context, ArrayList<bigModel> ModelArrayList) {
        this.context = context;
        this.ModelArrayList = ModelArrayList;

完整崩溃日志

118 27852-27852/com.a.b E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.a.b, PID: 27852
    android.view.InflateException: Binary XML file line #236 in com.a.b:layout/saved_job_recycleview: Binary XML file line #236 in com.a.b:layout/saved_job_recycleview: Error inflating class <unknown>
    Caused by: android.view.InflateException: Binary XML file line #236 in com.a.b:layout/saved_job_recycleview: Error inflating class <unknown>
    Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Constructor.newInstance0(Native Method)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
        at android.view.LayoutInflater.createView(LayoutInflater.java:858)
android.view.LayoutInflater.rInflate(LayoutInflater.java:1130)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1088)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:686)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:538)

报错截图

报错截图
报错截图
报错详情截图

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 15:54:31