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

Fragment中使用ArrayAdapter实现AutoCompleteTextView报错的解决方法

解决Fragment中ArrayAdapter参数不匹配的问题

问题出在ArrayAdapter的第一个参数上——你传的this是Fragment实例,而ArrayAdapter要求的是Context类型的参数。Fragment本身不是Context,所以会触发参数不匹配的错误。

修正方法很简单,把this替换成requireContext()(该方法能确保返回当前Fragment已关联的有效Context):

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)

    val frequencyArray = ArrayList<String>()
    frequencyArray.add("Daily")
    frequencyArray.add("Weekly")
    frequencyArray.add("Monthly")

    val adapter = ArrayAdapter(
        requireContext(), // 替换原有的this
        com.google.android.material.R.layout.support_simple_spinner_dropdown_item,
        frequencyArray
    )

    val autoComplete = view.findViewById<AutoCompleteTextView>(R.id.notAuto)
    autoComplete?.setAdapter(adapter)
}

额外说明:

  • requireContext()在Fragment已依附Activity的阶段(比如onViewCreated)会稳定返回Context,若Fragment未关联Activity则会抛出异常,适合当前场景使用。
  • 若想做可空兼容,也可以用context,但需增加非空判断,比如context?.let { ctx -> val adapter = ArrayAdapter(ctx, ...) },不过onViewCreated阶段context必然非空,用requireContext()更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 20:06:33