Значение MutableState не обновляется в блоке Observer
У меня есть оперативные данные, которые я наблюдаю в своем фрагменте, в котором я должен действовать в соответствии с результатом, полученным от LiveData, и обновлять свое MutableState, которое используется в составном.
Я не могу понять, почему значение MutableState не изменяется.
Вот как я это делаю:
viewModel.urlLiveData.observe(
this@MyFragment as LifecycleOwner
) {
val url = if (!it.isNullOrEmpty()) {
//perform operations on the string received from live data (it)
} else if (!someVariable.isNullOrEmpty()) {
someVariable
} else null
url?.let { finalUrl ->
Log.d("LOG_TAG", "url1: ${finalUrl}")
urlMutableState.value = UrlMutableState(url = finalUrl)
Log.d("LOG_TAG", "url2: ${urlMutableState?.value?.url}")
}
}
Logcat показывает разные URL-адреса для журналов url1 и url2. В идеале это должно быть так же, как я присваиваю своему MutableState новое значение.
Вот журналы:
D/LOG_TAG: url1: javascript:myCallback( )
D/LOG_TAG: url2: https://someUrl.com/page1
Здесь url2 содержит старое значение mutableState вместо нового значения.