Как с помощью Jetpack Compose сохранить значение текстового поля в динамически создаваемом классе?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как с помощью Jetpack Compose сохранить значение текстового поля в динамически создаваемом классе?

Сообщение Anonymous »

Я создал тестовое приложение для Android с помощью Jetpack Compose. Приложение состоит из столбца, содержащего динамически создаваемые текстовые поля. Каждое текстовое поле имеет экземпляр класса, который содержит свойства этого конкретного текстового поля. Класс создается динамически вместе с текстовым полем.
Проблема возникает, когда пользователь пытается ввести текст в текстовое поле. Никакого текста не появляется, текстовое поле остается пустым. Эта проблема возникает только в том случае, если переменная, содержащая значение, хранится внутри динамически создаваемого экземпляра класса, который создается внутри составного объекта. Если бы я создал один экземпляр вне составного объекта, все бы работало нормально.
Вот код класса, в котором хранится значение. Для простоты у него только одно свойство. В реальном приложении их будет больше.

Код: Выделить всё

class TextFieldLogic{
var value by mutableStateOf(TextFieldValue(""))
}
Вот код списка текстовых полей

Код: Выделить всё

var textFieldList by mutableStateOf(listOf())

Button(onClick = { textFieldList += TextFieldLogic() }) { Text("+") }

Column {
textFieldList.forEach { text ->
TextField(
value = text.value,
onValueChange = { text.value = it },
)
}
}
Это все, что касается кода. Как указано выше, при использовании этого метода ни одно нажатие клавиши не отображается в текстовом поле. Если у кого-нибудь есть решение, я буду рад его услышать.

Подробнее здесь: https://stackoverflow.com/questions/793 ... -a-dynamic
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»