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

如何通过列表索引修改TextView文本?解决Kotlin空安全报错

解决Intent传递ArrayList时的可空性错误

错误原因

intent.getIntegerArrayListExtra("result")返回的是ArrayList<Int?>?类型——既可能整个列表为null,列表中的元素也可能为null。Kotlin的空安全机制禁止直接对可空对象执行非空操作,所以会触发报错。

方案1:安全调用+空合并(最稳妥,覆盖所有空场景)

这种方式会处理列表为null、列表为空的情况,给TextView设置默认值:

class ResultActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_result)

        // 仅当列表不为null时执行排序
        val result = intent.getIntegerArrayListExtra("result")?.apply {
            sort()
        }

        val num1 = findViewById<TextView>(R.id.Num1)
        // 取第一个元素,列表为空或null时用默认值0
        val firstNum = result?.firstOrNull() ?: 0
        num1.text = firstNum.toString()
    }
}

说明:

  • 用Kotlin扩展函数sort()替代Collections.sort(),更符合Kotlin语法习惯
  • firstOrNull()在列表为空时返回null,配合?:设置默认值,避免索引越界
  • 使用text属性替代setText(),简化代码

方案2:非空断言(仅在确保列表必传且非空时使用)

如果你能100%保证Activity1一定会传递非空的result列表,可以用!!强制非空,但这种方式存在空指针风险:

class ResultActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_result)

        val result = intent.getIntegerArrayListExtra("result")!!
        Collections.sort(result)

        val num1 = findViewById<TextView>(R.id.Num1)
        num1.text = result[0].toString()
    }
}

方案3:用let函数做分支处理

通过let和?:分别处理列表存在、为空、不存在的场景:

class ResultActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_result)

        val num1 = findViewById<TextView>(R.id.Num1)
        intent.getIntegerArrayListExtra("result")?.let { list ->
            Collections.sort(list)
            num1.text = if (list.isNotEmpty()) list[0].toString() else "列表为空"
        } ?: run {
            num1.text = "未获取到数据"
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 23:39:21