在片段中添加并实现微调器

Add and implement a spinner in fragment

我看过实施活动微调器的指南和教程。但是,相同的方法不适用于片段。这是我在片段 class

onCreateView 方法中的代码
val personnames = arrayOf("akshat" , "mourya")
    val arrayAdapter = ArrayAdapter(this, android.R.layout.simple_spinner_item, personnames)
    spinner.adapter = arrayAdapter
    spinner.onItemSelectedListener = object :

    AdapterView.OnItemSelectedListener {
        override fun onNothingSelected(parent: AdapterView<*>?) {

        }

        override fun onItemSelected(
            parent: AdapterView<*>?,
            view: View?,
            position: Int,
            id: Long
        ) {

            spinnerText.text = personnames[position]
        }

当在第 2 行调用 ArrayAdapter 方法时,出现类型不匹配错误,因为第一个参数需要上下文,而在我的代码中它是一个片段。 我尝试在 activity 中做同样的事情并且成功了。 Fragment 应该是迷你活动,为什么会出现这个错误?

还有什么方法可以将微调器添加到我的 Fragment 中吗?

这样试试:

 val arrayAdapter = ArrayAdapter(requireActivity(), android.R.layout.simple_spinner_item, personnames)

Fragment 不是 Context 的子类,因此您不能将 this 作为 ArrayAdapter 构造函数的第一个参数传递。 当您需要 Fragment 中的 Context 对象时,您需要使用两个函数之一 requireContext()requireActivity().

在第 2 行中使用 requireContext() 代替 this

像这样:

val arrayAdapter = ArrayAdapter(requireContext(), android.R.layout.simple_spinner_item, personnames)