Как узнать, что в предыдущем фрагменте использовался компонент навигации - PullRequest
0 голосов
/ 30 мая 2019

Я пытаюсь выяснить, какой предыдущий фрагмент был в бэкстеке, и если это тот, который я хочу, то вернитесь к этому, в противном случае перейдите к другому фрагменту.У меня проблемы с поиском имени / идентификатора моего предыдущего фрагмента.Моя текущая настройка выглядит следующим образом:

Фрагмент 1 -> Фрагмент 2 -> Фрагмент 3, если предыдущий идентификатор Фрагмента 3 -> Фрагмент 2, затем вернитесь к нему с аргументами.

Но у меня также будет ситуация, когда это произойдет:

Фрагмент 4 -> Фрагмент 3 здесь я хочу иметь возможность также проверить, если предыдущий идентификатор /Имя Фрагмента 3 равно Фрагменту 4, и если оно вернется к этому Фрагменту с аргументами.

В основном у Фрагмента 3 будут разные маршруты, и я хочу иметь возможность определить, к какому предыдущему фрагменту он пойдет.

Моя проблема в том, что я не могу получить доступ к информации из предыдущих фрагментов.Чтобы проверить, возможно ли что-либо из этого.Я новичок в использовании компонента навигации Android, поэтому любая помощь приветствуется.

Если вопрос кажется немного запутанным, пожалуйста, дайте мне знать, чтобы я мог переписать его при необходимости.

Спасибо!

1 Ответ

0 голосов
/ 30 мая 2019

Вы можете получить фрагменты, используя их Id / Tag следующим образом:

val fragment = supportFragmentManager.findFragmentByTag(tag)

Также вы можете сделать так:

private String getCallerFragment(){
    FragmentManager fragmentManager = getFragmentManager();
    int count = getFragmentManager().getBackStackEntryCount(); 
    return fragmentManager.getBackStackEntryAt(count).getName();
}

Здесь Count выдаст последний фрагмент, который находится в трассировке стека, если вы хотите знать, какой фрагмент является вторым в заднем стеке. затем используйте return fragmentManager.getBackStackEntryAt(count-2).getName(). Таким образом, вы можете найти любой фрагмент, который находится в трассировке стека.

...