Android popBackStackImmediate не может удалить запрос поддержки GlideManagerFragment - PullRequest
0 голосов
/ 03 сентября 2018
activity.supportFragmentManager.popBackStackImmediate()

popBackStackImmediate не может удалить Glide's SupportRequestManagerFragment, знаете почему? и есть ли другой способ удалить SupportRequestManagerFragment из стека фрагментов?

Ответы [ 2 ]

0 голосов
/ 03 сентября 2018

Поскольку фрагмент Glide отсутствует в бэкстеке операций FragmentManager.

См. код .

pendingSupportRequestManagerFragments.put(fm, current);
fm.beginTransaction().add(current, FRAGMENT_TAG).commitAllowingStateLoss(); // <-- no addToBackStack() call

Вы, вероятно, также не должны трогать внутренности Glide без веской причины, но технически вы можете вызвать fragmentManager.getFragments(), проверить на ноль (он может вернуть ноль), повторить список, проверить if(fragment instanceof SupportRequestManagerFragment), и если да, затем удалите его с помощью транзакции фрагмента. Но это не кажется хорошей идеей. ^ _ ^

0 голосов
/ 03 сентября 2018

В этом случае для Glide используется контекст Activity вместо контекста фрагмента.

Glide.with(getActivity()).load("url").into(imageView)

подробнее см. Здесь

Если SupportRequestManagerFragment добавляется к записи backstack стека фрагментов вашего приложения, то внутри фрагмента вызывается метод Glide с использованием базового контекста, поэтому он не добавляется и создает проблему для обратного нажатия ..

Glide.with(this.getActivity().getBaseContext()).load("url").into(imageView)
...