Как реализовать несколько бэкстэков с помощью компонента Navigation arch android? - PullRequest
0 голосов
/ 18 октября 2019

Я хочу реализовать простой поток фрагментов, но с несколькими бэк-стеками, используя компонент навигации

В основной деятельности у меня есть просмотрщик с вкладками внизу, нажимающими на вкладкиили скольжение на панели просмотра слайдов к следующему или предыдущему фрагменту

То, что я до сих пор делал, это

1 - создавал несколько навигационных графов, я думал, что так мы сделаем несколько обратных стеков

nav-graph-1 nav-graph-2 ..

2 - в моем окне просмотра я создаю подобные фрагменты

 public Fragment getItem(int position) {
        if (position == 0)
            return NavHostFragment.create(R.navigation.navigation_all_news);
        else if (position == 1)
            return NavHostFragment.create(R.navigation.navigation_my_news);
        else if (position == 2)
            return NavHostFragment.create(R.navigation.navigation_search);
        else if (position == 3)
            return NavHostFragment.create(R.navigation.navigation_forum);
        else
            return NavHostFragment.create(R.navigation.navigation_settings);
    }

3 - я обработал спины в моих фрагментах, как это

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        navController = findNavController(this);

        OnBackPressedCallback callback = new OnBackPressedCallback(true) {
            @Override
            public void handleOnBackPressed() {
                navController.navigateUp();
                **//or navController.popBackStack()
                //Both have same effect :/**
            }
        };
        requireActivity().getOnBackPressedDispatcher().addCallback(this, callback);

    }

4, если при переходе

из первого элемента viewpager (фрагмент1) до (фрагмент1.1) и нажмите назад, (фрагмент1.1) выскочит

НО

если я пойду

(фрагмент1) до (фрагмент1.1)
слайд просмотрщик (FRAGMENT2) (фрагмент2.1)

или наоборот

теперь в backStack есть 3 фрагмента (фрагмент2.1) и (фрагмент1.1)оба включены

я делаю что-то не так или это просто не работает с несколькими навигационными графами и навигационной аркой?

1 Ответ

0 голосов
/ 31 октября 2019

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

Вот пример того, как люди из Google решили эту проблему (все еще это обходной путь): https://github.com/android/architecture-components-samples/blob/master/NavigationAdvancedSample/app/src/main/java/com/example/android/navigationadvancedsample/NavigationExtensions.kt

Я бы пошел на классическую реализацию, пока она не заработает.

Тем не менееУдачи в дальнейших исследованиях!

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