Android popBackStackImmediate无法删除Glide的SupportRequestManagerFragment

时间:2018-09-03 04:53:15

标签: android kotlin android-glide

activity.supportFragmentManager.popBackStackImmediate()

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

2 个答案:

答案 0 :(得分:1)

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

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

更多详细信息,请参见Here

如果将SupportRequestManagerFragment添加到应用程序片段堆栈的backstack条目中,则在片段内部使用基本上下文调用Glide方法,这样就不会添加它,并给回压带来麻烦。

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

答案 1 :(得分:1)

因为Glide的Fragment不在FragmentManager的操作堆栈中。

请参见code

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

您可能也应该无缘无故接触Glide的内部结构,但从技术上讲,您可以调用fragmentManager.getFragments(),检查是否为空(它可以返回空值),迭代列表,检查if(fragment instanceof SupportRequestManagerFragment),如果是,则通过分段事务将其删除。但这似乎不是一个好主意。 ^ _ ^