Это второй проект, в котором я сталкиваюсь с этой проблемой, и я действительно не могу найти хорошего решения нигде в inte rnet. Я надеюсь, что смогу прояснить ситуацию.
Фрагмент не получает событие, когда приостановлено (что нормально), но также не получает при возврате к возобновлению, например, изменение, сделанное из другого фрагмента. , не отражается в этом, пока вы не внесете другое изменение в liveata (когда оно возобновится).
Вот мой код на случай, если в нем есть ошибка:
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
viewModel = ViewModelProvider(this, factory).get(FavoritesViewModel::class.java)
viewModel.getFavoritedItems().observe(viewLifecycleOwner, Observer {
val list = mutableListOf<DBMovie>() // These lines copies the list as I don't want
list.addAll(it) // to pass it "by reference". But you can ignore it
favoritesAdapter.submitList(list)
})
}
В прошлом я называл что-то вроде viewmodel.reloadData()
на фрагменте onResume()
, но я чувствую, что это грязное решение, и я хочу сделать это правильно. Может быть, мне нужно расширить LiveData
и заставить его уведомлять об изменениях при возвращении из паузы. У кого-нибудь была эта проблема?