我的应用使用FragmentManager#getFragments()
方法:
https://developer.android.com/reference/android/support/v4/app/FragmentManager.html#getFragments()
一切都很好但是当我将Android支持库从25.3.0更新到25.4.0时它停止了工作。在25.4.0 getFragments()
方法中,不再返回所有片段:
获取当前添加到FragmentManager的所有片段的列表。这可能包括隐藏的内容以及显示的内容。这不包括仅在后栈中的任何片段,或者分离或删除的片段。
此前:
获取当前添加到FragmentManager的所有片段的列表。
替换了公共getFragments()
方法内容,并将旧主体移至包私有getActiveFragments()
方法。我可以通过反射调用它,但这个解决方案似乎超级hacky。我想知道是否有更好的解决方案。
public List<Fragment> getFragments() {
if(this.mAdded.isEmpty()) {
return Collections.EMPTY_LIST;
} else {
ArrayList var1 = this.mAdded;
synchronized(this.mAdded) {
return (List)this.mAdded.clone();
}
}
}
List<Fragment> getActiveFragments() {
if(this.mActive == null) {
return null;
} else {
int count = this.mActive.size();
ArrayList fragments = new ArrayList(count);
for(int i = 0; i < count; ++i) {
fragments.add(this.mActive.valueAt(i));
}
return fragments;
}
}
所以我的问题是: 有没有办法从25.3.0版本重新创建FragmentManager#getFragments()行为?