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

如何解决androidx.appcompat.widget.SearchView无法强转为android.widget.SearchView错误

问题根因

你遇到的类型转换错误是因为布局文件和Kotlin代码中引用的SearchView不属于同一个包下的类:

  • 你在activity_main.xml里使用的是AndroidX兼容包下的androidx.appcompat.widget.SearchView
  • 但在MainActivity.kt中导入的是系统原生包下的android.widget.SearchView,两者类型不匹配,运行时findViewById找到的是AndroidX的实例,强转成原生类就会抛出对应报错。

解决方法

只需要修改MainActivity.kt中的导入语句即可:

  1. 删掉原来的两行导入:
import android.widget.SearchView
import android.widget.SearchView.OnQueryTextListener
  1. 替换成AndroidX包下的SearchView导入:
import androidx.appcompat.widget.SearchView

修改完成后,你声明的val searchview :SearchView会自动匹配AndroidX的SearchView类型,和布局中的控件类型一致,类型转换错误就会消失,原有搜索逻辑不需要做其他改动。

额外优化建议

从你的代码里可以看到已经引入了View Binding(存在ActivityMainBinding引用),可以直接通过绑定对象获取SearchView实例,不需要手动调用findViewById,进一步避免类似类型匹配错误:

// 替换原来的findViewById写法
binding.searchView.setOnQueryTextListener(object: SearchView.OnQueryTextListener {
    override fun onQueryTextSubmit(query: String?): Boolean {
        return false
    }

    override fun onQueryTextChange(newText: String?): Boolean {
        adapter.filter.filter(newText)
        return false
    }
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 07:27:04