getSupportFragmentManager (). getFragments () устарел?

Я работаю с viewpager и компилирую API 23. Я показываю ошибку компиляции в моем коде для следующего утверждения, но проект компилируется.

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

Кроме того, я не могу найти этот метод в документации Android для менеджера фрагментов поддержки и не-поддержки. Кто-нибудь знает, что здесь происходит?

 Marissa Nicholas09 авг. 2017 г., 23:04
Вы нашли решение ?
 Kristy Welsh04 авг. 2016 г., 18:58
@ sonnv1368, да, я сделал.
 Kristy Welsh10 авг. 2017 г., 16:11
@MarissaNicholas, посмотри мой ответ.
 sonnv136804 авг. 2016 г., 18:26
Вы использовали импорт android.support.v4.app.Fragment ;?
 Tanis.7x04 авг. 2016 г., 18:29
Этот метод не считается устаревшим с версии 24.1.1 библиотеки поддержки. Что именно отображается ошибка?
 Kristy Welsh04 авг. 2016 г., 18:56
@ Tanis.7x Не удается разрешить метод. (По сути, просто получить красное подчеркивание в соответствии с методом, но проект компилируется.
 Fantômas04 авг. 2016 г., 18:25
Первый комментарий к ответу Майкла говорит сам за себя ...stackoverflow.com/questions/6102007/... We shouldn't use this method. It is marked with @hide and was not supposed to be included with the support library jar. It should not be considered part of the exported API. Так как это былоскрытыйЯ думаю, что Google, наконец, решил удалить этот метод.

Ответы на вопрос(1)

Решение Вопроса

Я действительно сделал это, чтобы получить ссылку на все фрагменты:

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;
}
 Marissa Nicholas11 авг. 2017 г., 17:50
Как вы думаете, что-то подобное могло бы предотвратить это? : @Override public void onAttachFragment (фрагмент Fragment) {for (ссылка на WeakReference <Fragment>: mFragList) {if (reference instanceOf WeakRefence <ThisFragment>) {return; } mFragList.add (фрагмент); }}
 Marissa Nicholas10 авг. 2017 г., 16:22
Большое спасибо, Кристи! Ты самый лучший! Кроме того, если вы можете объяснить, что делает getactivefragments, это будет здорово!
 Marissa Nicholas10 авг. 2017 г., 20:48
также для: @Override public void onAttachFragment (фрагмент фрагмента) {mFragList.add (новый WeakReference (фрагмент)); } не приведет к дублированию при воссоздании экрана или использовании ft.replace ().
 Kristy Welsh11 авг. 2017 г., 16:31
@MarissaNicholas Я не думаю, что это создаст дубликаты при воссоздании экрана (как при повороте). Может быть, на ft.replace ().

Ваш ответ на вопрос