Добавить и реализовать спиннер во фрагменте - PullRequest
0 голосов
/ 28 мая 2020

Я видел руководства и учебные пособия по реализации счетчика для действий. Однако тот же метод не работает для фрагментов. Это был мой код внутри метода 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]
        }

Когда метод ArrayAdapter вызывается в строке 2, я получаю ошибку несоответствия типа, потому что первый параметр требует контекста и в мой код это фрагмент. Я пробовал делать то же самое в упражнении, и это сработало. Фрагмент должен быть похож на мини-действия, так почему эта ошибка возникает?

Также есть ли способ добавить счетчик к моему фрагменту?

Ответы [ 3 ]

1 голос
/ 28 мая 2020

Используйте requireContext () вместо this в строке 2.

Вот так:

val arrayAdapter = ArrayAdapter(requireContext(), android.R.layout.simple_spinner_item, personnames)
0 голосов
/ 28 мая 2020

Fragment не является подклассом Context, поэтому вы не можете передать this в качестве первого аргумента конструктора ArrayAdapter. Если вам нужен объект Context внутри Fragment, вам нужно использовать одну из двух функций requireContext() или requireActivity().

0 голосов
/ 28 мая 2020

Попробуйте так:

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