看来mutableStateOf是比liveData更好的选择,但是在活动的onCreate方法中我无法观察到它的存在,它是否具有解决方法或坚持在活动中使用liveData?
// viewModel
var showError by mutableStateOf("")
private set
// ...
// activity
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
viewModel.showError.observe(this) { // <- not work in activity
if (it != "") {
Toast.makeText(this, it, Toast.LENGTH_SHORT).show()
viewModel.onShowError()
}
}
}
// ...
答案 0 :(得分:0)
您可以将showError
保留为ViewModel中的LiveData
:
val _showError = mutableLiveData("")
val showError: LiveData
get() = _showError
然后从任何可扩展扩展名observeAsState
的可组合代码中使用它:
val showErrorState = viewModel.showError.observeAsState()
因此,在您的活动中,您可以使用直接公开为liveData的showError