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

Kotlin Jetpack Navigation Fragment中Spinner异常,报ArrayAdapter调用错误

解决Fragment中Spinner的ArrayAdapter初始化错误

嘿,我一眼就揪出你代码里的问题啦!你遇到的“ArrayAdapter function cannot be called”错误,核心原因是ArrayAdapter的构造函数第一个参数需要传入Context类型对象,但你传了Fragment的this——Fragment本身并不是Context,所以编译器找不到匹配的构造方法,自然就报错了。

修复方案

把构造参数里的this换成Fragment能获取到的合法Context就行,有两种靠谱的选择:

  • 用requireContext():这是Fragment自带的方法,会返回当前Fragment绑定的Context,在onViewCreated阶段调用完全安全,它还会在Fragment未绑定Context时抛出异常,帮你提前发现潜在问题。
  • 用view.context:直接从onViewCreated的view参数里获取Context,也是非常稳妥的方式。

修正后的完整代码

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
    navController = Navigation.findNavController(view)
    
    val list: MutableList<String> = ArrayList()
    for (i in 1..1000) {
        list.add("Item $i")
    }
    
    // 替换this为合法的Context对象
    val adapter: ArrayAdapter<String> = ArrayAdapter(requireContext(), R.layout.support_simple_spinner_dropdown_item, list)
    spinnerCompany.adapter = adapter
}

改完之后,编译器就能匹配到正确的ArrayAdapter构造方法,你的Spinner应该就能正常工作啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:47:59