Фрагмент внутри FragmentPagerAdapter не закрыт / приостановлен - PullRequest
0 голосов
/ 23 декабря 2018

У меня есть ViewPager с пользовательским адаптером.Первый раз, когда он открывается, он работает нормально.После, когда я снова открываю фрагмент, адаптер не загружается, потому что он не закрывается и не останавливается, даже если я создаю новый адаптер.Кажется, снова открывается старый, который еще жив и не вызывает onCreateView, потому что не переходит и на onPause.Это мой фрагмент, содержащий ViewPager

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

private void init() {
    view.findViewById(R.id.pb_loading).setVisibility(View.VISIBLE);

    viewPager = view.findViewById(R.id.vp_lists);
    addTabs();

    TabLayout tabLayout = view.findViewById(R.id.tl_tabs);
    tabLayout.setupWithViewPager(viewPager);

    fab.setVisibility(View.INVISIBLE);
}

private void addTabs() {
    adapter = new ViewPagerAdapter(getFragmentManager());
    ShoppingListTabMissFragment missFragment = new ShoppingListTabMissFragment();
    missFragment.context = context;
    missFragment.uid = uid;
    adapter.addFrag(missFragment, context.getString(R.string.tab_miss));
    ShoppingListTabListFragment listFragment = new ShoppingListTabListFragment();
    listFragment.context = context;
    listFragment.uid = uid;
    adapter.addFrag(listFragment, context.getString(R.string.tab_list));
    ShoppingListTabDoneFragment doneFragment = new ShoppingListTabDoneFragment();
    doneFragment.context = context;
    doneFragment.uid = uid;
    adapter.addFrag(doneFragment, context.getString(R.string.tab_done));
    viewPager.setAdapter(adapter);
}

Это один из фрагментов, включенных во вкладки, ShoppingListTabMissFragment:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.view_miss, container, false);

    lv_list = view.findViewById(R.id.lv_list);

    return view;
}

@Override
public void onResume() {
    firebaseShoppingList = new FirebaseShoppingList(context, uid);
    if (!MainApplication.firebaseShoppingLists.contains(firebaseShoppingList)) {
        MainApplication.firebaseShoppingLists.add(firebaseShoppingList);
        firebaseShoppingList.setFirebaseListener();
    } else {
        int index;
        index = MainApplication.firebaseShoppingLists.indexOf(firebaseShoppingList);
        firebaseShoppingList = MainApplication.firebaseShoppingLists.get(index);
    }

    firebaseShoppingList.setFirebaseUpdateDataListener(this);

    updateList();

    super.onResume();
}

Это похоже на то, что новый фрагмент создан, но загруженстарый, который все еще виден на экране и не помещен в паузу или уничтожен.

...