Получить последний фрагмент в стеке - программирование
Подтвердить что ты не робот

Получить последний фрагмент в стеке

Я видел этот пост, но решения, размещенные здесь, не работают для меня: получить последний фрагмент в backstack

Когда я заменяю фрагмент на другой, я использую:

FragmentManager manager = getSupportFragmentManager();
    FragmentTransaction ft = manager.beginTransaction();

    ft.replace(android.R.id.tabcontent, fragment, tag);
    ft.addToBackStack(null);

    ft.commit();

Итак, обратите внимание, что я использую теги для обнаружения любого фрагмента.

Моя проблема в частности заключается в следующем:

Предположим, что у меня есть фрагмент_А, фрагмент_B и фрагмент_C. Я могу добраться до фрагмента_C от фрагмента_А или фрагмента_B, и в зависимости от родителя вызова мне нужно сделать что-то конкретное. Итак, снова мне нужно восстановить последний ФРАГМЕНТ в заднем стеке.

Когда я пытаюсь сделать:

FragmentManager fm = getSupportFragmentManager();

        for(int entry = 0; entry < fm.getBackStackEntryCount(); entry++){
            String ide = fm.getBackStackEntryAt(entry).getName();
           Log.i("TAG", "Found fragment: " + ide);
        }

Я получаю nulls. Если я использую getId() вместо этого, я получаю числа, поэтому я попытался сделать:

int id = fm.getBackStackEntryAt(entry).getId();
Fragment fragment = fm.findFragmentById(id);
Log.i("TAG", "Found fragment: " + fragment.getTag());

Но я получаю nulls.. Я не знаю, что еще делать, поэтому любая помощь будет оценена.

Изменить: я вызываю эти методы в onBackPressed() {...}

4b9b3361

Ответ 1

Если вы используете BackStackEntry.getName(), это должно быть:

ft.replace(android.R.id.tabcontent, fragment, tag);
ft.addToBackStack(tag);