Не удается вызвать функцию findViewById() при работе с фрагментами

#android #kotlin

#Android #kotlin

Вопрос:

Во время изучения Kotlin у меня возникли проблемы с сеансами фрагментов.

 override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    Log.d("life_cycle", "F onViewCreated")

    super.onViewCreated(view, savedInstanceState)

    val pass: Button = findViewById(R.id.pass)

    pass.setOnClickListener {
        dataPassListener.onDataPass("Good bye")
    }
}
 

Я хочу писать val pass: Button = findViewById(R.id.pass) , но не могу пользоваться findViewById() .

Я думаю, проблема в том, что androidx.appcompat.app.AppCompatActivity это не импортируется.

Комментарии:

1. К какому классу относится эта функция? Ответ больше связан с тем, какой класс расширяет этот класс, а не с тем, какие классы импортируются.

2. Пожалуйста, используйте view.findViewById()

Ответ №1:

Судя по тому, что вы написали, этот фрагмент взят из одного из ваших классов, который расширяет некоторый вариант Fragment класса.

Если это так, то, что вы хотите сделать, это:

 val pass: Button = view.findViewById(R.id.pass)
 

Разница здесь в том, что findViewById() вызывается для view экземпляра, переданного в обратном вызове жизненного цикла.

(Это предполагает, что R.id.pass ресурс определен в представлении, расширенном этим фрагментом).

Ответ №2:

вы должны использовать view.findViewById

 val pass: Button = view.findViewById(R.id.pass)