#android #kotlin
#Android #котлин
Вопрос:
Как получить доступ к функции page.questionTextView
in setAnswer
//Create the given page (indicated by position)
override fun instantiateItem(container: ViewGroup, position: Int): Any {
val page = inflater.inflate(R.layout.layout_question, null)
page.questionTextView.text = "hi"
//Add the page to the front of the queue
(container as ViewPager).addView(page, 0)
return page
}
private fun setAnswer(page: View){
//how to access page.questionTextView
}
Комментарии:
1. Вы можете объявить страницу как глобальную переменную
private lateinit var page: View
Ответ №1:
Я нашел решение: я использую метод «with» для доступа к странице.Вопрос_textview
private fun setAnswer(page: View){
with(page){
questionTextView.text = "hi"
}
}
Ответ №2:
Вы можете объявить переменную page на верхнем уровне, то есть непосредственно внутри пакета. По умолчанию, если вы не укажете модификатор видимости, ваша переменная будет общедоступной. Это означает, что он будет доступен везде (внутри пакета).
Дополнительная информация о видимости в kotlin: https://kotlinlang.org/docs/reference/visibility-modifiers.html
Ответ №3:
Если вы создадите глобальную переменную страницы для своего класса, вы можете инициализировать ее в своей функции instantiateItem и использовать ее для доступа к вашему представлению из функции setAnswer.
Попробуйте это
private lateinit var page: View
//Create the given page (indicated by position)
override fun instantiateItem(container: ViewGroup, position: Int): Any {
page = inflater.inflate(R.layout.layout_question, null)
page.questionTextView.text = "hi"
//Add the page to the front of the queue
(container as ViewPager).addView(page, 0)
return page
}
private fun setAnswer(){
//how to access page.questionTextView
page.questionTextView.text = "your answer"
}