데이터는 잘 가져와지지만 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
medium.com/better-programming/how-to-fix-a-serious-problem-in-livedata-android-594a3f18e981
'안드로이드 > 안드로이드 디버깅' 카테고리의 다른 글
[디버깅] SwipeRefreshLayout+RecyclerView 조합에서 item click 이벤트 수신 불가 문제 (0) | 2020.11.29 |
---|---|
[디버깅] 리사이클러뷰 스크롤 다운 시 아이템이 뒤섞이는 문제 (0) | 2020.11.29 |
[디버깅] 리사이클러뷰 아이템이 제대로 나오지 않는 문제 (0) | 2020.11.06 |
[디버그] RecyclerView 실제 데이터와 View가 맞지 않는 문제 (0) | 2020.10.11 |
[디버깅] ClassNotFoundException: Dex file '/data/app,...' (0) | 2020.10.04 |