Comment accéder à page.questionTextView dans la fonction 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
}
3 Réponses :
Vous pouvez déclarer la variable de page au niveau supérieur, c'est-à-dire directement dans le package. Par défaut, si vous ne spécifiez pas de modificateur de visibilité, votre variable sera publique. Cela signifie qu'il sera accessible partout (dans le package).
Plus d'informations sur la visibilité dans kotlin: https://kotlinlang.org/docs/ reference / visibilité-modifiers.html
Si vous créez la page var global dans votre classe, vous pouvez l'initialiser dans votre fonction instantiateItem et l'utiliser pour accéder à votre vue depuis la fonction setAnswer .
Essayez ceci
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"
}
J'ai trouvé la solution: j'utilise la méthode "with" pour accéder à page.questionTextView
private fun setAnswer(page: View){
with(page){
questionTextView.text = "hi"
}
}
Vous pouvez déclarer la page comme variable globale
private lateinit var page: View