У меня есть фрагменты, которые динамически добавляются в мой ViewPager, поэтому я использую ViewPager2, чтобы он работал, и он хорошо работает, но у меня есть три кнопки с плавающим действием для выполнения некоторых операций над фрагментами. Я использовал слушателей для связи между фрагментами и действиями, но у меня есть проблема, что я не могу получить текущий объект фрагмента. Я использую Map для связи между ними и получения объекта фрагмента для выполнения операций, подобных этой, в моем коде
public class ViewPagerAdapter extends FragmentStateAdapter {
Map<Integer, Fragment> fragmentsListMap = new HashMap<>();
List<CurrentLocation> mCurrentLocationList = new ArrayList<>();
private FragmentManager fragmentManager;
public ViewPagerAdapter(@NonNull FragmentActivity fm, List<CurrentLocation> mCurrentLocationList) {
super(fm);
this.mCurrentLocationList = mCurrentLocationList;
}
@NonNull
@Override
public Fragment createFragment(int position) {
Fragment fragment = HomeFragment.newInstance(mCurrentLocationList.get(position).getFacilityId(), mCurrentLocationList.get(position).getSessionId());
fragmentsListMap.put(position,fragment);
return fragment;
}
@Override
public int getItemCount() {
return mCurrentLocationList.size();
}
public Map<Integer,Fragment> getFragmentsList(){
return fragmentsListMap;
}
}
, и в своей деятельности я получаю фрагментListMap, а по индексу я получаю объект фрагмента вот так, и это работает хорошо
Map<Integer,Fragment> fragmentsListMap = new HashMap<>();
fragmentsListMap = mViewPagerAdapter.getFragmentsList();
HomeFragment homeFragment = (HomeFragment) fragmentsListMap.get(i);
, но если устройство вращается или приложение уничтожено и воссоздано, объект фрагмента возвращает ноль, и я не могу заставить объект фрагмента выполнять мои действия. Пожалуйста, помогите ...