getSupportFragmentManager().getFragments()被弃用了吗?

3
我正在使用viewpager并编译API 23。我的代码中出现了一条编译错误,但项目确实可以编译。
List<Fragment> fragments = getSupportFragmentManager().getFragments();

此外,我无法在Android文档中找到此方法,无论是支持片段管理器还是非支持片段管理器。 有没有人知道这里发生了什么?

Michael的回答的第一条评论就说了一切...https://dev59.com/22025IYBdhLWcg3wST2Q 我们不应该使用这个方法。它被标记为@hide,不应该包含在支持库jar中。它不应该被视为导出API的一部分。由于它被隐藏,我猜Google最终决定删除那个方法。 - Phantômaxx
该方法在支持库版本24.1.1中尚未被弃用。具体显示的错误是什么? - Bryan Herbst
@Tanis.7x 无法解析方法。(基本上只是在该方法下获得了红色的下划线,但项目可以编译。) - Kristy Welsh
@sonnv1368,是的,我做了。 - Kristy Welsh
你找到解决方案了吗? - user2386226
显示剩余2条评论
1个回答

5

我实际上是这样做的,以获取所有片段的引用:

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;
}

非常感谢你,Kristy!你是最棒的!另外,如果你能解释一下getactivefragments是什么,那就太好了! - user2386226
另外,对于:@Override public void onAttachFragment (Fragment fragment) { mFragList.add(new WeakReference(fragment)); } 当屏幕重新创建或使用ft.replace()时,它不会导致重复吗? - user2386226
@MarissaNicholas 我认为当屏幕重新创建(例如旋转)时,它不会创建重复项。也许在ft.replace()上会有。 - Kristy Welsh
你认为像这样的代码能够防止这种情况发生吗?:@Override public void onAttachFragment(Fragment fragment) { for (WeakReference<Fragment> reference : mFragList) { if (reference instanceOf WeakRefence<ThisFragment>) { return; } mFragList.add(fragment); } } - user2386226

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接