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

Kotlin中Fragment内ListView实现报错求助

解决Fragment中实现ListView的报错问题

嘿,我帮你找出了代码里的几个问题,这些应该就是你遇到报错的原因,咱们一步步来修正:

  • 变量声明语法错误
    Kotlin里声明变量时,变量名和类型之间必须加冒号,你写的private lateinit var listView ListView漏了冒号,正确写法应该是:

    private lateinit var listView: ListView
    
  • findViewById的调用时机和方式不对
    在Fragment的onCreateView里,你还没把布局加载(inflate)出来就直接调用findViewById,这时候根本找不到对应的ListView控件。正确的做法是先把布局inflate成View对象,再从这个View里查找控件:

    val view = inflater.inflate(R.layout.chatroom, container, false)
    listView = view.findViewById(R.id.chatroom_list_view) as ListView
    
  • ArrayAdapter的参数有两处错误

    1. 第一个参数需要传入Context对象,但你传的是this(当前Fragment实例),Fragment本身不是Context的子类,应该用requireContext()来获取上下文;
    2. 第三个参数你传了一个逗号分隔的字符串,可ArrayAdapter需要的是字符串数组或者List<String>类型的数据源。你应该把它改成List形式:
    val testList = listOf("hu", "tu", "su", "send", "pe", "t")
    val adapter = ArrayAdapter(requireContext(), android.R.layout.simple_list_item_1, testList)
    
  • 代码执行顺序错误
    你现在是先尝试设置ListView,最后才返回布局,这会导致前面的ListView操作都是基于一个不存在的控件。正确的流程应该是:先加载布局 → 找到ListView → 设置适配器 → 最后返回布局。

修正后的完整代码

import android.os.Bundle
import android.support.v4.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ListView
import android.widget.ArrayAdapter

class Chatroom : Fragment() {
    private lateinit var listView: ListView

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        // 加载布局
        val view = inflater.inflate(R.layout.chatroom, container, false)
        // 获取ListView控件
        listView = view.findViewById(R.id.chatroom_list_view) as ListView
        // 准备数据源
        val testList = listOf("hu", "tu", "su", "send", "pe", "t")
        // 创建适配器
        val adapter = ArrayAdapter(requireContext(), android.R.layout.simple_list_item_1, testList)
        // 设置适配器
        listView.adapter = adapter
        // 返回布局
        return view
    }
}

按照上面的修改调整代码后,应该就能正常运行啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:07:47