compose?
Пытаюсь перенести старый проект, хочу начать с MutableState объектов, но не могу догнать про методы component1 component2
java и jetpack compose ❓❓❓
package com.nire.exampleproject.viewModel; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; public class MainViewModel extends ViewModel { private final MutableLiveData<Integer> counter = new MutableLiveData<>(0); public MutableLiveData<Integer> getCounter() { return counter; } public void incrementCounter() { Integer value = counter.getValue(); if (value == null) value = 0; counter.setValue(value + 1); } } вот такое в @Composable fun Screen(mv: MainViewModel = viewModel()) { CounterTest("this count: ${mv.counter.value}") { mv.incrementCounter() } }
т.е делаешь в комозабл функции и используешь val counter by mv.counter.asState()
нету такого метода у counter, уже попробовал =(
попробуй implementation("androidx.compose.runtime:runtime-livedata:1.2.0-alpha02")
package com.nire.exampleproject.viewModel import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel class MainViewModelK : ViewModel() { val counterLiveDate: LiveData<Int> get() = counter private val counter = MutableLiveData<Int>() private var count = 0 fun increaseCounter() { counter.value = ++count } } выше рабочий код, ниже мой, не могу понять разницы package com.nire.exampleproject.viewModel; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; public class MainViewModel extends ViewModel { public LiveData<Integer> counterLiveDate; private final MutableLiveData<Integer> counter = new MutableLiveData<Integer>(); private final Integer count = 0; public void increaseCounter() { Integer value = counter.getValue(); if (value == null) value = 0; counter.setValue(value + count); } } можете подсказать что тут не так? вылетает с ошибкой model.counterLiveDate must not be null но выше я вроде не инициализировал его
ну в джаве если ты не инициализируешь там будет null
не в этом дело было, забыл геттер прописать
Обсуждают сегодня