Android popBackStackImmediate 无法移除 Glide 的 SupportRequestManagerFragment

Android popBackStackImmediate can not remove Glide's SupportRequestManagerFragment

activity.supportFragmentManager.popBackStackImmediate()

popBackStackImmediate无法移除Glide的SupportRequestManagerFragment,你知道为什么吗?还有其他方法可以从片段堆栈中删除 SupportRequestManagerFragment 吗?

此案例片段使用 Activity 上下文而不是 Glide 的片段上下文。

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

更多详情参考Here

如果 SupportRequestManagerFragment 被添加到您的应用程序片段堆栈的 backstack 条目中,则在片段内部使用基本上下文调用 Glide 方法,因此它不会被添加并为后退创建问题..

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

因为Glide的Fragment不在FragmentManager的操作backstack上

code

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

如果没有充分的理由,您可能也不应该接触 Glide 的内部结构,但从技术上讲,您可以调用 fragmentManager.getFragments(),检查 null(它可以 return null),迭代列表,检查if(fragment instanceof SupportRequestManagerFragment),如果是,则用分片交易移除。但这似乎不是一个好主意。 ^_^