старый реселлервью остается в качестве фона после поворота - PullRequest
0 голосов
/ 22 декабря 2018

Я использую утилита просмотра с mmvm + aliveata + привязка данных.После каждого поворота я могу видеть старые предметы, застрявшие позади, как фон.

Я вижу, что адаптер имеет правильное количество элементов, и действительно, адаптер отображает и прокручивает только самые новые данные.На заднем плане, однако, вы можете увидеть старый список.

код довольно стандартный и простой - простой простой adatper / recyclervyew с элементами привязки данных.

1 Ответ

0 голосов
/ 22 декабря 2018

Даже если вы не разместили никакого кода, который действительно бесполезен, я собираюсь предположить , что вы отображаете свой RecyclerView внутри фрагмента и что в onCreate своей деятельности вынаберите следующую строку:

getSupportFragmentManager()
    .beginTransaction()
    .add(frameLayout, fragment)
    .commit();

Одна из приятных особенностей FragmentManager заключается в том, что он сохраняет ваши фрагменты даже после поворота экрана, чтобы содержимое не изменялось.Это происходит всякий раз, когда savedInstanceState не равно нулю.

Это означает, что если вы просто добавите свой фрагмент с проверкой сохраненного состояния, он будет помещен поверх фрагмента, который сохранил менеджер, и это то, что выделают.Однако использование этой функции для поддержания состояния требует немного усилий по написанию кода, и я не могу вам с этим помочь, поскольку не знаю, как выглядит ваш код.Итак, самое простое решение - просто изменить add на replace.

getSupportFragmentManager()
    .beginTransaction()
    .replace(frameLayout, fragment)
    .commit();

Это говорит менеджеру: «Меня не волнует сохраненное состояние. Если там был фрагмент ранее, просто удалитеэто перед добавлением этого. "

...