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

Spinner的onItemSelected方法触发NullPointerException(Fragment切换返回时)

Spinner切换Fragment返回时触发NullPointerException的解决方法

问题原因

Android系统的AdapterView.OnItemSelectedListener接口中,onItemSelected方法的view参数本身允许为null(比如Fragment切换返回、Spinner状态恢复的场景下,系统可能传入null)。但在Kotlin中重写该方法时,默认将view视为非空参数,当系统传入null时就会触发NullPointerException,和你遇到的错误日志完全匹配。

直接解决方案

将onItemSelected方法中的view参数声明为可空类型(在View后加?),即可接受null值,避免崩溃:

spTahajjud.adapter = customAdapter
spTahajjud.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
    override fun onItemSelected(parent: AdapterView<*>, view: View?, position: Int, id: Long) {
        paramsPost["tahajjud"] = position
    }

    override fun onNothingSelected(parent: AdapterView<*>) {}
}

额外提示

如果后续需要使用view参数,记得做null安全处理,比如用let语法:

override fun onItemSelected(parent: AdapterView<*>, view: View?, position: Int, id: Long) {
    paramsPost["tahajjud"] = position
    view?.let {
        // 在这里安全处理view相关逻辑,比如修改文本、设置样式等
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 01:47:35