Android popBackStackImmediate无法删除Glide的SupportRequestManagerFragment

问题描述 投票:0回答:2
activity.supportFragmentManager.popBackStackImmediate()

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

android kotlin android-glide
2个回答
1
投票

因为Glide的Fragment不在FragmentManager的操作后台上。

code

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

你可能也不应该没有充分理由触摸Glide的内部,但从技术上讲你可以调用fragmentManager.getFragments(),检查null(它可以返回null),迭代列表,检查if(fragment instanceof SupportRequestManagerFragment),如果是,则用片段事务删除它。但这似乎不是一个好主意。 ^ _ ^


4
投票

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

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

更多细节请参考Here

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

Glide.with(this.getActivity().getBaseContext()).load("url").into(imageView)
© www.soinside.com 2019 - 2024. All rights reserved.