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

Android运行报错lateinit property layoutManager未初始化求解决方案

错误原因

  • 报错核心是你声明的lateinit变量layoutManager在被调用时还未完成初始化赋值。
  • 你代码中原先初始化layoutManager的代码段被注释,但是在Volley网络请求的成功回调中直接调用了该变量给RecyclerView设置布局、创建分割线,就触发了未初始化异常。
  • 额外问题:你把RecyclerView的布局绑定、分割线添加、适配器绑定逻辑写在了遍历书籍数据的for循环内部,每添加一条数据就重复执行一次配置,会造成不必要的性能损耗。

修复方案

  1. 在recyclerdashboard=view.findViewById(R.id.recyclerdashboard)代码行下方添加layoutManager初始化代码:
layoutManager = LinearLayoutManager(activity)
  1. 调整Volley请求成功回调内的逻辑,把RecyclerView配置代码移到for循环外部,修改后参考代码如下:
val jsonObjectRequest =
    object : JsonObjectRequest(Request.Method.GET, url, null, Response.Listener {
        // 处理响应逻辑
        val success = it.getBoolean("success")
        if (success) {
            val data = it.getJSONArray("data")
            for (i in 0 until data.length()) {
                val bookJsonObject = data.getJSONObject(i)
                val bookObject = Book(
                    bookJsonObject.getString("book_id"),
                    bookJsonObject.getString("name"),
                    bookJsonObject.getString("author"),
                    bookJsonObject.getString("rating"),
                    bookJsonObject.getString("price"),
                    bookJsonObject.getString("image")
                )
                bookinfolist.add(bookObject)
            }
            // 列表配置仅执行一次即可
            recyclerdashboard.layoutManager=layoutManager
            recyclerdashboard.addItemDecoration(
                DividerItemDecoration(
                    recyclerdashboard.context,
                    (layoutManager as LinearLayoutManager).orientation
                )
            )
            recycleradapter= DashboardRecyclerAdapter(activity as Context,bookinfolist)
            recyclerdashboard.adapter=recycleradapter
        } else  {
            Toast.makeText(activity as Context, "出现未知错误", Toast.LENGTH_SHORT).show()
        }

    }, Response.ErrorListener {
        // 处理错误逻辑
        print("error $it")

    }) {
        override fun getHeaders(): MutableMap<String, String> {
            val headers = HashMap<String, String>()
            headers["Content-type"] = "application/json"
            headers["token"] = "9bf534118365f1"
            return headers
        }
    }
  1. 重新运行项目即可解决崩溃问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 11:27:02