Я пытаюсь сделать простое приложение «Прирастание/уменьшение», используя MutableLivedata в качестве практики.
По какой -то причине значение моего TextCount продолжает сбросить обратно до 0 после увеличения/уменьшения. Он идет от 0 до 1, затем сбросится до 0. Я действительно не уверен, почему. Я не эксперт в Котлине, поэтому я, вероятно, пропустил что -то основное. Я сделал аналогичное приложение, используя строку MutableLivadata, и значение, кажется, сохраняется. Надеюсь, вы сможете помочь мне с этим < /p>
// From MainView.kt
class MainView: ViewModel() {
var textCount: MutableLiveData = MutableLiveData(0)
fun incrementClick(){
textCount.value = textCount.value.inc()
}
fun decrementClick(){
textCount.value = textCount.value.dec()
}
}
//From MainActivity.kt
@Composable
fun Main(
myViewModel: MainView = MainView(),
modifier: Modifier
) {
var clickCtr = myViewModel.textCount.observeAsState(0)
Column(
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center,
modifier = modifier
.fillMaxSize()
) {
Clicker(
clickCtr.value,
{
myViewModel.incrementClick()
},
{
myViewModel.decrementClick()
}
)
}
}
@Composable
fun Main(
myViewModel: MainView = MainView(),
modifier: Modifier
) {
var clickCtr = myViewModel.textCount.observeAsState(0)
Column(
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center,
modifier = modifier
.fillMaxSize()
) {
Clicker(
clickCtr.value,
{
myViewModel.incrementClick()
Log.d("MainClick", clickCtr.value.toString())
},
{
myViewModel.decrementClick()
Log.d("MainClick", clickCtr.value.toString())
}
)
}
}
// Rom MainActivity.kt
@Composable
fun Clicker(
clickValue:Int,
actionInc: () -> Unit,
actionDec: () -> Unit
) {
Text(
text = clickValue.toString(),
fontWeight = FontWeight.ExtraBold,
fontSize = 50.sp,
textAlign = TextAlign.Center
)
Spacer(
modifier = Modifier.height(20.dp)
)
Row(
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.Center
) {
Button(
onClick = actionInc
) {
Text(text = "Click to increment")
}
Button(
onClick = actionDec
) {
Text(text = "Click to decrement")
}
}
}
Here's a sample of my log.d
It displays the value after incrementing. As you can see, It increment to 1 the first time, and on the second attempt, it increments to 2, but the display never displays 2 and keeps on reverting to 0 (I hope that makes sense). I tried changing the mutablelivedata value and it keeps on defaulting to that after 1st attempt
---------------------------- PROCESS STARTED (9617) for package com.example.counttheclick ----------------------------
2025-09-29 12:57:54.365 9617-9617 MainClick com.example.counttheclick D 1
2025-09-29 12:57:54.816 9617-9617 MainClick com.example.counttheclick D 2
2025-09-29 12:57:55.283 9617-9617 MainClick com.example.counttheclick D 1
2025-09-29 12:57:55.699 9617-9617 MainClick com.example.counttheclick D 1
2025-09-29 12:57:56.017 9617-9617 MainClick com.example.counttheclick D 1
2025-09-29 12:57:56.483 9617-9617 MainClick com.example.counttheclick D 1
2025-09-29 12:57:56.649 9617-9617 MainClick com.example.counttheclick D 1
2025-09-29 12:57:56.816 9617-9617 MainClick com.example.counttheclick D 1
2025-09-29 12:57:56.983 9617-9617 MainClick com.example.counttheclick D 1
Подробнее здесь: https://stackoverflow.com/questions/797 ... er-2nd-try
Переменная MutableLivedata продолжает сбросить по умолчанию после 2 -й попытки ⇐ Android
Форум для тех, кто программирует под Android
1759124515
Anonymous
Я пытаюсь сделать простое приложение «Прирастание/уменьшение», используя MutableLivedata в качестве практики.
По какой -то причине значение моего TextCount продолжает сбросить обратно до 0 после увеличения/уменьшения. Он идет от 0 до 1, затем сбросится до 0. Я действительно не уверен, почему. Я не эксперт в Котлине, поэтому я, вероятно, пропустил что -то основное. Я сделал аналогичное приложение, используя строку MutableLivadata, и значение, кажется, сохраняется. Надеюсь, вы сможете помочь мне с этим < /p>
// From MainView.kt
class MainView: ViewModel() {
var textCount: MutableLiveData = MutableLiveData(0)
fun incrementClick(){
textCount.value = textCount.value.inc()
}
fun decrementClick(){
textCount.value = textCount.value.dec()
}
}
//From MainActivity.kt
@Composable
fun Main(
myViewModel: MainView = MainView(),
modifier: Modifier
) {
var clickCtr = myViewModel.textCount.observeAsState(0)
Column(
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center,
modifier = modifier
.fillMaxSize()
) {
Clicker(
clickCtr.value,
{
myViewModel.incrementClick()
},
{
myViewModel.decrementClick()
}
)
}
}
@Composable
fun Main(
myViewModel: MainView = MainView(),
modifier: Modifier
) {
var clickCtr = myViewModel.textCount.observeAsState(0)
Column(
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center,
modifier = modifier
.fillMaxSize()
) {
Clicker(
clickCtr.value,
{
myViewModel.incrementClick()
Log.d("MainClick", clickCtr.value.toString())
},
{
myViewModel.decrementClick()
Log.d("MainClick", clickCtr.value.toString())
}
)
}
}
// Rom MainActivity.kt
@Composable
fun Clicker(
clickValue:Int,
actionInc: () -> Unit,
actionDec: () -> Unit
) {
Text(
text = clickValue.toString(),
fontWeight = FontWeight.ExtraBold,
fontSize = 50.sp,
textAlign = TextAlign.Center
)
Spacer(
modifier = Modifier.height(20.dp)
)
Row(
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.Center
) {
Button(
onClick = actionInc
) {
Text(text = "Click to increment")
}
Button(
onClick = actionDec
) {
Text(text = "Click to decrement")
}
}
}
Here's a sample of my log.d
It displays the value after incrementing. As you can see, It increment to 1 the first time, and on the second attempt, it increments to 2, but the display never displays 2 and keeps on reverting to 0 (I hope that makes sense). I tried changing the mutablelivedata value and it keeps on defaulting to that after 1st attempt
---------------------------- PROCESS STARTED (9617) for package com.example.counttheclick ----------------------------
2025-09-29 12:57:54.365 9617-9617 MainClick com.example.counttheclick D 1
2025-09-29 12:57:54.816 9617-9617 MainClick com.example.counttheclick D 2
2025-09-29 12:57:55.283 9617-9617 MainClick com.example.counttheclick D 1
2025-09-29 12:57:55.699 9617-9617 MainClick com.example.counttheclick D 1
2025-09-29 12:57:56.017 9617-9617 MainClick com.example.counttheclick D 1
2025-09-29 12:57:56.483 9617-9617 MainClick com.example.counttheclick D 1
2025-09-29 12:57:56.649 9617-9617 MainClick com.example.counttheclick D 1
2025-09-29 12:57:56.816 9617-9617 MainClick com.example.counttheclick D 1
2025-09-29 12:57:56.983 9617-9617 MainClick com.example.counttheclick D 1
Подробнее здесь: [url]https://stackoverflow.com/questions/79777763/mutablelivedata-variable-keeps-resetting-to-default-after-2nd-try[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия