Как получить предыдущий пункт назначения с компонентом навигации? - PullRequest
0 голосов
/ 15 марта 2020

У меня есть фрагменты A, B, C и X, где их навигация следующая.

 A --> X 
 B --> X 
 C --> X

Как узнать информацию о последнем или предыдущем пункте назначения в X?

Текущий идентификатор пункта назначения можно найти по

Navigation.findNavController(v).getCurrentDestination().getId()

Я также пытался используя getBackStackEntry(int destinationId), но он возвращает только самый верхний NavBackStackEntry для идентификатора назначения. Другими словами, текущий пункт назначения.

Также getActivity().getSupportFragmentManager().getBackStackEntryCount();, возвращающий 0.

Возможные решения:

  1. Передача данных из A, B и C к X и идентифицируйте предыдущий фрагмент, сверяясь с этими данными.
  2. Использовать общий SharedViewModel.

Возможно ли получить текущий пункт назначения?

1 Ответ

0 голосов
/ 15 марта 2020

добавить слушателя смены места назначения. и сравните id с A, B, C идентификаторами на клавише Back, нажмите

NavController.OnDestinationChangedListener { controller, destination, arguments ->
    // react on change or 
    //you can check destination.id or destination.label and act based on that
)}
...