#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)