在片段中添加并实现微调器
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)
我看过实施活动微调器的指南和教程。但是,相同的方法不适用于片段。这是我在片段 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)