Лучший способ узнать, из какого фрагмента мы прошли - PullRequest
1 голос
/ 06 февраля 2020

Я пишу приложение, которое использует много фрагментов (с ViewModels). Я использую Компонент Навигации с графиком навигации для навигации от одного фрагмента к другому, используя

findNavController().navigate(R.id.myFragment)

В некоторых случаях я перемещаюсь по фрагментам довольно часто и без каких-либо изменений c зависимости
Вы можете go как F1-> F2-> F3-> F4, но вы также можете go как F1-> F2-> F4-> F3

Например, когда мы перемещаемся до F4, мне нужно знать, какой фрагмент был до этого, это был F3 или F2? Мне удалось обойти это сейчас, отправив на F4 arguments Bundle() с arguments.putBoolean("fromFragment3",true) и arguments.getBoolean("fromFragment3"), но это только кажется уродливым, и вы можете быстро испортить весь код.

Вопрос:

Какой лучший способ узнать, какой фрагмент был пользователем перед переходом к текущему фрагменту?

1 Ответ

0 голосов
/ 06 февраля 2020

Вы можете использовать addOnDestinationChangedListener и прослушивать фрагменты транзакций:

 NavController navController= Navigation.findNavController(MainActivity.this,R.id.your_nav_host);

        navController.addOnDestinationChangedListener(new NavController.OnDestinationChangedListener() {
            @Override
            public void onDestinationChanged(@NonNull NavController controller, @NonNull NavDestination destination, @Nullable Bundle arguments) {
                Log.e(TAG, "onDestinationChanged: "+destination.getLabel());
            }
        });
...