ViewPager2 пересоздание фрагментов

У меня есть три фрагмента

MainFragment // Фрагмент с ViewPager2
ItemFragment // Фрагмент айтема адаптера ViewPager2, который содержит RecyclerView
PreviewFragment // Фрагмент на который я перехожу после нажатия на любой айтем RecyclerView в ItemFragment

Всё бы ничего, но есть проблема.

Когда я перехожу MainFragment -> PreviewFragment (именно так, не из ItemFragment) то при возврате назад ItemFragment пересоздается с нуля.
Оно и понятно ведь в OnCreateView я делаю так:

   viewPager.adapter = MyAdapter(this)
   // Добавляю айтемы 

Пробовал сохранять MyAdapter вот так:

private val adapter: MyAdapter by lazy { 
    MyAdapter(this)
}

Но приводит к крашу, все решения которые там описаны мне не помогали.

Еще пробовал где ни будь сохранять фрагменты, в каком ни будь репозитории и там их кешировать и потом добавлять, но это приводит к куча утечкам в LeakCanary у ViewPager2.

В общем то хотелось бы услышать как решается данная проблема, а именно нужно как-то сохранять стейт у айтемов ViewPager2, возможно их и правда нужно кешировать где-то, но у меня чё-то не получилось.


Ответы (0 шт):