본문 바로가기

안드로이드/안드로이드 디버깅

[디버깅] 두 개의 프래그먼트에서 동시에 LiveData를 Observing 하는 경우

데이터는 잘 가져와지지만 UI 레이아웃 할 때 문제가 생기는 것 같다. 따라서, Livedata observing을 적절히 해제 해주어야 한다. 혹은 onActivityCreate에서 선언하면 lifecyclerOwner가 스스로 컨트롤 한다.

 

//Fragment 1
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        recycler_view.adapter = RecordTodayAdapter(requireContext(), viewModel)
        ...
    }

override fun onActivityCreated(savedInstanceState: Bundle?) {
    super.onActivityCreated(savedInstanceState)
    lifecycleScope.launch {
        recycler_view.adapter = RecordTodayAdapter(requireContext(), viewModel)
        viewModel.getAllRecordByDate(date)?.observe(viewLifecycleOwner, androidx.lifecycle.Observer {
            viewModel.viewModelScope.launch(Dispatchers.Main) {
                    (recycler_view.adapter as RecordTodayAdapter).submitList(it)
            }
        })
    }
}
    
//Fragment 2
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
    calendarInit()
    recycler_view.adapter = RecordTodayAdapter(requireContext(), viewModel)
 }


//call after onViewCreated
override fun onActivityCreated(savedInstanceState: Bundle?) {
    lifecycleScope.launch {
        recycler_view.adapter = RecordTodayAdapter(requireContext(), viewModel)
        viewModel.getAllRecordByDate(date)?.observe(viewLifecycleOwner, androidx.lifecycle.Observer {
            viewModel.viewModelScope.launch(Dispatchers.Main) {
                (recycler_view.adapter as RecordTodayAdapter).submitList(it)
            }
        })
    }
}

 

stackoverflow.com/questions/51892478/multiple-livedata-observers-after-popping-fragment

 

Multiple LiveData Observers After Popping Fragment

Issue Summary: Multiple LiveData Observers are being triggered in a Fragment after navigating to a new Fragment, popping the new Fragment, and returning to the original Fragment. Details: The

stackoverflow.com

ciwhiz.tistory.com/280

 

Fragment 에서 viewmodel 로부터 LiveData observe 할 때

https://blog.usejournal.com/observe-livedata-from-viewmodel-in-fragment-fd7d14f9f5fb를 번역/발췌함 Observe LiveData from ViewModel in Fragment Google introduced Android architecture components which..

ciwhiz.tistory.com

medium.com/better-programming/how-to-fix-a-serious-problem-in-livedata-android-594a3f18e981