getSupportFragmentManager()。getFragments()已弃用?

时间:2016-08-04 16:17:19

标签: android android-fragments

我正在使用viewpager并编译API 23.我在我的代码中显示了以下语句的编译错误,但项目确实编译了。

List<Fragment> fragments = getSupportFragmentManager().getFragments();

此外,我在android文档中找不到支持片段管理器和非支持片段管理器的方法。有谁知道这里发生了什么?

1 个答案:

答案 0 :(得分:4)

我实际上这样做是为了获得对所有片段的引用:

private List<WeakReference<Fragment>> mFragList = new ArrayList<WeakReference<Fragment>>();

@Override
public void onAttachFragment (Fragment fragment) {
    mFragList.add(new WeakReference(fragment));
}

public List<Fragment> getActiveFragments() {
    ArrayList<Fragment> ret = new ArrayList<Fragment>();
    for(WeakReference<Fragment> ref : mFragList) {
        Fragment f = ref.get();
        if(f != null) {
            if(f.isVisible()) {
                ret.add(f);
            }
        }
    }
    return ret;
}

public Fragment findFragement(String tClass) {

    List<Fragment> fragments = getActiveFragments();
    for (Fragment fragment : fragments) {
        if (tClass.equalsIgnoreCase("Home")) {
            if (fragment instanceof ToggleFragment) {
                return fragment;

            }
        } else if (tClass.equalsIgnoreCase("Contacts")) {
            if (fragment instanceof ContactFragment) {
                return fragment;
            }
        }
    }
    return null;
}