I'm following the documentation here to start a transition after fetching data: https://developer.android.com/guide/fragments/animate#recyclerview
The viewModel code is invoked and runs successfully, but the observer is never called when postponeEnterTransition
is used. If I remove postponeEnterTransition
, then the observer is called.
I'm not sure what I'm doing wrong.
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
postponeEnterTransition()
homeViewModel.data.observe(viewLifecycleOwner) {
// TODO: set data on adapter
startPostponedEnterTransition()
}
homeViewModel.fetchData()
}
And here is my view model code:
class HomeViewModel(private val repository: Repository) : ViewModel() {
val loading: MutableLiveData<Boolean> by lazy {
MutableLiveData<Boolean>()
}
val data: MutableLiveData<List<Data>> by lazy {
MutableLiveData<List<Data>>()
}
fun fetchData() {
loading.postValue(true)
viewModelScope.launch {
val result = repository.fetchData()
result?.let {
when(it) {
is Result.Success -> data.postValue(it.data)
is Result.Error -> "" // TODO: Handle error
}
}
loading.postValue(false)
}
}
}
question from:
https://stackoverflow.com/questions/65951142/livedata-observer-not-called-when-using-postponeentertransition 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…