Фрагмент, приостановленный внутри ViewPager, не получает события LiveData - PullRequest
0 голосов
/ 22 марта 2020

Это второй проект, в котором я сталкиваюсь с этой проблемой, и я действительно не могу найти хорошего решения нигде в 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 и заставить его уведомлять об изменениях при возвращении из паузы. У кого-нибудь была эта проблема?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...