Я сталкиваюсь с проблемой на моем экране Jetpack Compose, где раздел моего пользовательского интерфейса, содержащий несколько текстовых полей, полностью исчезает после того, как приложение отправляется на фоновый режим (например, нажав кнопку «Домой»), а затем возвращается на передний план. Дело не только в том, что текст в полях потерян; Вся композиционная область, в которой хранятся эти текстовые поля, по -видимому, удаляется из композиции или больше не виден. Здесь общий обзор настройки: • Экран представляет собой композиционную функцию (AddCustomerScreen), в котором используется каркас. лямбда каркаса. • Видимость или данные для этих текстовых полей, как правило, привязаны к объекту состояния (например, Screenvm.customeritem.value), который удерживается в ViewModel. • У меня есть запуск, который работает, когда я сначала составлен, что может принести начальные данные или проверки. Источник - это ViewModel. • Я подтвердил, что сам экземпляр ViewModel, по -видимому, переживает процесс фона.// AddCustomerScreen.kt
@Composable
fun AddCustomerScreen(
// ... navigation params ...
screenVM: AddCustomerVM = hiltViewModel()
) {
// LaunchedEffect for initial setup (simplified)
LaunchedEffect(key1 = /* ... */) {
// Potentially loads data or checks permissions
// screenVM.loadInitialData()
}
Scaffold(
topBar = { /* ... */ },
content = { paddingValues ->
Box(modifier = Modifier.padding(paddingValues)) {
// The Composable containing TextFields is called here
CustomerFormContent(screenVM)
}
},
bottomBar = { /* ... */ }
)
}
// Composable that holds the TextFields (simplified example)
@Composable
fun CustomerFormContent(screenVM: AddCustomerVM) {
val customerState by screenVM.customerItem.collectAsState() // Or however you observe it
// Log to check if this Composable is even recomposed
Log.d("CustomerFormContent", "Recomposing. Customer name: ${customerState.name}")
// Example condition that MIGHT be causing issues if it becomes false
// if (screenVM.isFormVisible.value) { // Hypothetical visibility flag
Column {
// Example TextField
WaveTextField(
value = customerState.name,
onValueChange = { screenVM.updateName(it) },
label = "Customer Name"
)
// ... other TextFields ...
}
// }
}
< /code>
Wavetextfiled: < /p>
@Composable
fun WaveTextField(
value: String,
onValueChange: (String) -> Unit,
modifier: Modifier = Modifier,
enabled: Boolean = true,
readOnly: Boolean = false,
textStyle: TextStyle = LocalTextStyle.current,
label: @Composable (() -> Unit)? = null,
placeholder: String = "",
leadingIcon: @Composable (() -> Unit)? = null,
trailingIcon: @Composable (() -> Unit)? = null,
supportingText: @Composable (() -> Unit)? = null,
isError: Boolean = false,
keyboardOptions: KeyboardOptions = KeyboardOptions.Default,
keyboardActions: KeyboardActions = KeyboardActions.Default,
visualTransformation: VisualTransformation = VisualTransformation.None,
singleLine: Boolean = false,
maxLines: Int = Int.MAX_VALUE,
shape: RoundedCornerShape = RoundedCornerShape(12.dp),
interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
) {
// CompositionLocalProvider(LocalLayoutDirection provides LayoutDirection.Rtl) {
TextField(
value = value,
onValueChange = onValueChange,
modifier = modifier,
enabled = enabled,
readOnly = readOnly,
textStyle = textStyle,
label = label,
placeholder = { Text(placeholder, Modifier.fillMaxWidth()) },
leadingIcon = leadingIcon,
trailingIcon = trailingIcon,
supportingText = supportingText,
isError = isError,
keyboardOptions = keyboardOptions,
keyboardActions = keyboardActions,
visualTransformation = visualTransformation,
singleLine = singleLine,
maxLines = maxLines,
shape = shape,
colors = TextFieldDefaults.colors(
focusedIndicatorColor = Color.Transparent,
unfocusedIndicatorColor = Color.Transparent,
disabledIndicatorColor = Color.Transparent,
errorIndicatorColor = Color.Transparent,
),
interactionSource = interactionSource,
)
// }
}
< /code>
befor home preesed:
после дома PreeSed:
Подробнее здесь: https://stackoverflow.com/questions/797 ... ter-app-is
JetPack Compose TextFields (или весь композиционный раздел) исчезнет после того, как приложение будет фон и возобновлено ⇐ Android
Форум для тех, кто программирует под Android
1758009010
Anonymous
Я сталкиваюсь с проблемой на моем экране Jetpack Compose, где раздел моего пользовательского интерфейса, содержащий несколько текстовых полей, полностью исчезает после того, как приложение отправляется на фоновый режим (например, нажав кнопку «Домой»), а затем возвращается на передний план. Дело не только в том, что текст в полях потерян; Вся композиционная область, в которой хранятся эти текстовые поля, по -видимому, удаляется из композиции или больше не виден. Здесь общий обзор настройки: • Экран представляет собой композиционную функцию (AddCustomerScreen), в котором используется каркас. лямбда каркаса. • Видимость или данные для этих текстовых полей, как правило, привязаны к объекту состояния (например, Screenvm.customeritem.value), который удерживается в ViewModel. • У меня есть запуск, который работает, когда я сначала составлен, что может принести начальные данные или проверки. Источник - это ViewModel. • Я подтвердил, что сам экземпляр ViewModel, по -видимому, переживает процесс фона.// AddCustomerScreen.kt
@Composable
fun AddCustomerScreen(
// ... navigation params ...
screenVM: AddCustomerVM = hiltViewModel()
) {
// LaunchedEffect for initial setup (simplified)
LaunchedEffect(key1 = /* ... */) {
// Potentially loads data or checks permissions
// screenVM.loadInitialData()
}
Scaffold(
topBar = { /* ... */ },
content = { paddingValues ->
Box(modifier = Modifier.padding(paddingValues)) {
// The Composable containing TextFields is called here
CustomerFormContent(screenVM)
}
},
bottomBar = { /* ... */ }
)
}
// Composable that holds the TextFields (simplified example)
@Composable
fun CustomerFormContent(screenVM: AddCustomerVM) {
val customerState by screenVM.customerItem.collectAsState() // Or however you observe it
// Log to check if this Composable is even recomposed
Log.d("CustomerFormContent", "Recomposing. Customer name: ${customerState.name}")
// Example condition that MIGHT be causing issues if it becomes false
// if (screenVM.isFormVisible.value) { // Hypothetical visibility flag
Column {
// Example TextField
WaveTextField(
value = customerState.name,
onValueChange = { screenVM.updateName(it) },
label = "Customer Name"
)
// ... other TextFields ...
}
// }
}
< /code>
Wavetextfiled: < /p>
@Composable
fun WaveTextField(
value: String,
onValueChange: (String) -> Unit,
modifier: Modifier = Modifier,
enabled: Boolean = true,
readOnly: Boolean = false,
textStyle: TextStyle = LocalTextStyle.current,
label: @Composable (() -> Unit)? = null,
placeholder: String = "",
leadingIcon: @Composable (() -> Unit)? = null,
trailingIcon: @Composable (() -> Unit)? = null,
supportingText: @Composable (() -> Unit)? = null,
isError: Boolean = false,
keyboardOptions: KeyboardOptions = KeyboardOptions.Default,
keyboardActions: KeyboardActions = KeyboardActions.Default,
visualTransformation: VisualTransformation = VisualTransformation.None,
singleLine: Boolean = false,
maxLines: Int = Int.MAX_VALUE,
shape: RoundedCornerShape = RoundedCornerShape(12.dp),
interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
) {
// CompositionLocalProvider(LocalLayoutDirection provides LayoutDirection.Rtl) {
TextField(
value = value,
onValueChange = onValueChange,
modifier = modifier,
enabled = enabled,
readOnly = readOnly,
textStyle = textStyle,
label = label,
placeholder = { Text(placeholder, Modifier.fillMaxWidth()) },
leadingIcon = leadingIcon,
trailingIcon = trailingIcon,
supportingText = supportingText,
isError = isError,
keyboardOptions = keyboardOptions,
keyboardActions = keyboardActions,
visualTransformation = visualTransformation,
singleLine = singleLine,
maxLines = maxLines,
shape = shape,
colors = TextFieldDefaults.colors(
focusedIndicatorColor = Color.Transparent,
unfocusedIndicatorColor = Color.Transparent,
disabledIndicatorColor = Color.Transparent,
errorIndicatorColor = Color.Transparent,
),
interactionSource = interactionSource,
)
// }
}
< /code>
befor home preesed:
после дома PreeSed:
Подробнее здесь: [url]https://stackoverflow.com/questions/79765897/jetpack-compose-textfields-or-entire-composable-section-disappear-after-app-is[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия