Логическое значение превращается в число 904 в Kotlin

#android #kotlin #boolean #onclicklistener #data-class

#Android #kotlin #логическое #onclicklistener #класс данных

Вопрос:

Я работаю над приложением для викторины для своего проекта в университете, и я пытаюсь сохранить button и boolean, которые указывают, правильный ответ или нет в классе данных, и сохранить все кнопки во временном списке, чтобы я мог добавить onclick listener для всех них позже. Но когда я пытаюсь получить доступ к логическому значению, оно просто превращается в число 904. Вот мой код, касающийся этих кнопок.

 val ansBtnList: MutableList<ButtonDataClass> = mutableListOf()
--------------------------------------------------------------
val ans = ButtonDataClass(Button(this), quizToShow.getValue(planets[0]).answers[i].isRight)
--------------------------------------------------------------
ansBtnList.add(ans)
--------------------------------------------------------------
for (i in 0..3) {
        ansBtnList[i].btn.setOnClickListener { Log.d(null, ansBtnList[i].btn.right.toString()) }
    }
  

Заранее спасибо!

РЕДАКТИРОВАТЬ: код ButtonDataClass:

 data class ButtonDataClass (var btn: Button, var right: Boolean)
  

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

1. ansBtnList[i].btn.right возможно, это не логическое значение. Не могли бы вы опубликовать этот класс?

2. @shkschneider готово

Ответ №1:

Это не то right , что вы думаете. btn это кнопка. У кнопки есть right поле, которое связано с ее координатами на экране. Вместо этого вы должны попробовать ansBtnList[i].right.toString() .

Ответ №2:

btn.right ссылается на right переменную Button класса, а не на ту, которая присутствует в ButtonDataClass

заменить: ansBtnList[i].btn.setOnClickListener { Log.d(null, ansBtnList[i].btn.right.toString()) }

с: ansBtnList[i].btn.setOnClickListener { Log.d("your_tag_id", ansBtnList[i].right) }

Ответ №3:

Конечно, вы обращаетесь не к тому полю. ansBtnList[i].btn.right дает вам правильное положение вашей кнопки в пикселях. Скорее сделайте ansBtnList[i].right