Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
934 views
in Technique[技术] by (71.8m points)

android - LiveData Observer not called when using postponeEnterTransition

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
Waitting for answers

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...