Ich habe ein RecyclerView
in einem Fragment
welches wiederum in einem ViewPager
ist, wenn ich zwischen ViewPager
Seiten wische, sehe ich, dass onDetach
von Fragment
aufgerufen wird, aber aus irgendeinem Grund RecyclerView
ist immer noch in dieser bestimmten Position für die Fragment
in ViewPager
vorhanden, selbst die Bildlaufposition von RecyclerView
wird beibehalten, wenn ich zu dem gelösten Fragment zurückkomme.
Ich verwende FragmentStatePagerAdapter
für ViewPager
und ich gebe POSITION_NONE
von getItemPosition()
zurück, aber es hat keine Wirkung.
Bitte helfen Sie mir, das Problem hier zu verstehen.
Versuche diese Punkte.
1) MyAdapter extends FragmentStatePagerAdapter
2) Setze Adapter aus Fragment mit getChildFragmentManager()
zB: mViewPager.setAdapter(new MyAdapter(getChildFragmentManager(), getActivity(), this))
3) Aus ViewpagerFrment Override
setUserVisibleHint
method
Das liegt daran, dass Viewpager einen Caching-Mechanismus verwendet. Lesen Sie diesen Artikel:
FragmentStatePagerAdapter
speichert den Zustand und zerstört die Fragmente; Es stellt auch den Zustand wieder her, wenn Fragmente neu erstellt werden, wodurch der Status der Recycleansicht wiederhergestellt wird (die Scrollposition).
Vom Endbenutzer ist es dasselbe Verhalten wie die Verwendung von FragmentPageAdapter
, die Fragmente im Speicher hält.
Es ist das normale und normalerweise gewünschte Verhalten.
Tags und Links android android-fragments android-recyclerview android-viewpager