Как использовать NavController (с NavHost во фрагменте) во фрагменте, а не в деятельности? - PullRequest
0 голосов
/ 17 июня 2019

У меня есть MainActivity, и в нем у меня есть navController с mainFragment, который служит NavHost для 4 фрагментов (Feed, Notifications, Profile и Help). Моя проблема связана с третьим из этих фрагментов, в котором мне также нужен собственный navController с 3 вариантами (действия, достижения и редактирование профиля). Я попытался создать то же самое, что и в MainActivity, с фрагментом NavHost во фрагменте профиля, но андроид не принял его таким образом, и я не смог найти ни одного примера поиска в Google. Кто-нибудь знает как это решить?

https://developer.android.com/reference/kotlin/androidx/navigation/NavController

В соответствии с тем, как я реализовал в MainActivity, это «bottomNavigationView» - это меню, созданное для перехода между фрагментами:

        navController = Navigation.findNavController(this, R.id.main_fragment);

        navController.addOnDestinationChangedListener((controller, destination, arguments) -> {
        navDestination = destination;

        switch (destination.getId()) {

            case R.id.feed:
                bottomNavigationView.setCurrentActiveItem(0);
                break;
            case R.id.alerts:
                bottomNavigationView.setCurrentActiveItem(1);
                break;
            case R.id.profile:
                bottomNavigationView.setCurrentActiveItem(2);
                break;
            case R.id.help:
                bottomNavigationView.setCurrentActiveItem(3);
                break;

        }

    });
    bottomNavigationView.setNavigationChangeListener((view, position) -> {

        switch (position) {
            case 0:
                if (navDestination.getId() != R.id.feed) {
                    titleHeaderMain.setText(R.string.publicacao);
                    titleHeaderMain.setGravity(View.TEXT_ALIGNMENT_CENTER);
                    navController.navigate(R.id.feed);
                }
                break;
            case 1:
                if (navDestination.getId() != R.id.alerts) {
                    titleHeaderMain.setText(R.string.notificacoes);
                    navController.navigate(R.id.alerts);
                }
                break;
            case 2:
                if (navDestination.getId() != R.id.profile) {
                    titleHeaderMain.setText(R.string.perfil);
                    navController.navigate(R.id.profile);
                }
                break;
            case 3:
                if (navDestination.getId() != R.id.help) {
                    titleHeaderMain.setText(R.string.ajudar);
                    navController.navigate(R.id.help);
                }
                break;
        }

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