如何从Android支持库25.3.0重新创建FragmentManager#getFragments()行为

时间:2017-10-09 11:21:08

标签: java android android-fragments

我的应用使用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()行为?

0 个答案:

没有答案