Как получить фрагмент по тегу из ViewPager2 в java коде - PullRequest
0 голосов
/ 23 марта 2020

У меня есть фрагменты, которые динамически добавляются в мой 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);

, но если устройство вращается или приложение уничтожено и воссоздано, объект фрагмента возвращает ноль, и я не могу заставить объект фрагмента выполнять мои действия. Пожалуйста, помогите ...

...