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

Kotlin报Conflicting declarations错误,同名adapter声明冲突如何解决

报错原因

你遇到的是Kotlin的变量声明冲突问题,在onCreate方法的同一局部作用域内,你两次声明了同名的adapter变量:

  • 第一次:lateinit var adapter: NewsListAdapter,可变类型局部变量
  • 第二次:val adapter = NewsListAdapter(items),只读类型局部变量

Kotlin语法不允许同一作用域内存在同名变量,无论变量的可变性、类型是否一致,都会触发该报错。

修复方案

根据你的实际使用需求,二选一即可:

  1. 如果你仅需要在onCreate方法内使用adapter,直接删除第一次的lateinit声明即可,调整后代码如下:
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    lateinit var recyclerView: RecyclerView

    recyclerView.layoutManager = LinearLayoutManager(this)
    val items = fetchData()
    val adapter  = NewsListAdapter(items)
    recyclerView.adapter = adapter
}
  1. 如果你后续需要在MainActivity的其他方法中访问adapter,则保留第一次的声明,删除第二次声明前的val关键字,直接给已声明的变量赋值即可,调整后代码如下:
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    lateinit var recyclerView: RecyclerView
    lateinit var adapter: NewsListAdapter

    recyclerView.layoutManager = LinearLayoutManager(this)
    val items = fetchData()
    adapter = NewsListAdapter(items)
    recyclerView.adapter = adapter
}

小提示:如果需要在类的多个方法中访问recyclerView或adapter,建议将变量声明提到onCreate方法外,作为类的成员变量,避免局部变量作用域限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 04:03:02