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

Material3 SearchBar组件XML膨胀异常,请求问题排查帮助

排查Material3 SearchBar组件Inflate崩溃问题

我正在尝试实现Material3中的新SearchBar组件,参考官方文档进行开发,运行应用时出现Inflate崩溃,以下是相关代码与报错信息:


XML布局代码

androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:focusable="true"
    android:focusableInTouchMode="true">

    <com.google.android.material.appbar.AppBarLayout
        android:id="@+id/appbar"
        style="@style/Widget.MaterialComponents.AppBarLayout.Surface"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:elevation="0dp">

        <com.google.android.material.search.SearchBar
            android:id="@+id/scheme_search_bar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:navigationIcon="@drawable/ic_back"
            app:forceDefaultNavigationOnClickListener="true"
            android:minHeight="48dp" />

    </com.google.android.material.appbar.AppBarLayout>

    <com.google.android.material.search.SearchView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:hint="Введите схему"
        app:layout_anchor="@id/scheme_search_bar">

        <!-- 搜索结果展示区域 -->
        <androidx.recyclerview.widget.RecyclerView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

    </com.google.android.material.search.SearchView>

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <!-- 主页面内容RecyclerView -->

    </androidx.constraintlayout.widget.ConstraintLayout>

</androidx.coordinatorlayout.widget.CoordinatorLayout>

Fragment中的ViewBinding代码

private val binding by lazy(LazyThreadSafetyMode.NONE) { FragmentWaterBinding.inflate(layoutInflater) }

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?) = binding.root

崩溃报错信息

android.view.InflateException: Binary XML file line #80 in example/my_fragment: Binary XML file line #80 in example/my_fragment: Error inflating class com.google.android.material.search.SearchBar
Caused by: android.view.InflateException: Binary XML file line #80 in example/my_fragment: Error inflating class com.google.android.material.search.SearchBar
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:881)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1033)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:988)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:1150)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1111)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:1153)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1111)
at android.view.LayoutInflater.inflate(LayoutInflater.java:709)
at android.view.LayoutInflater.inflate(LayoutInflater.java:547)


当前使用的Material依赖

implementation "com.google.android.material:material:1.9.0-alpha01"

排查方向与解决方案

  1. 主题兼容性检查
    Material3组件要求应用主题继承自Theme.Material3.*系列主题,而非旧的Theme.MaterialComponents.*。若使用Material2主题,会导致SearchBar无法正常Inflate。修改styles.xml主题:

    <style name="AppTheme" parent="Theme.Material3.Light.NoActionBar">
        <!-- 自定义主题属性 -->
    </style>
    
  2. 验证navigationIcon资源
    InvocationTargetException可能源于@drawable/ic_back资源不存在或格式错误,确认该资源在项目中存在且为有效矢量图/位图。

  3. 升级Material依赖版本
    1.9.0-alpha01为测试版,存在潜在bug。建议升级至最新稳定版:

    implementation "com.google.android.material:material:1.11.0"
    
  4. 检查组件引用正确性
    确认XML中com.google.android.material.search.SearchBar和SearchView的类路径拼写无误,是Material3的正确组件。

  5. 清理重建项目
    执行Build -> Clean Project和Build -> Rebuild Project,清除gradle缓存后重新构建,排除缓存导致的资源加载异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 03:15:46