Создайте навигационный контроллер

Контроллер навигации — это одна из ключевых концепций навигации. Он содержит граф навигации и предоставляет методы, позволяющие приложению перемещаться между пунктами назначения в графе.

При использовании компонента Navigation вы создаете контроллер навигации с помощью класса NavController . NavController — это центральный API навигации. Он отслеживает, какие пункты назначения посетил пользователь, и позволяет ему перемещаться между ними. В этом руководстве показано, как создать NavController в вашем приложении.

Информацию о том, как добавить навигационный граф в NavController , см. в разделе «Разработка навигационного графа» . NavController предоставляет несколько различных способов навигации к пунктам назначения в своем графе. Подробнее см. в разделе «Навигация к пункту назначения» .

Сочинить

Для создания NavController при использовании Jetpack Compose вызовите функцию rememberNavController() :

val navController = rememberNavController()

Вам следует создать NavController на высоком уровне в иерархии ваших компонуемых объектов. Он должен находиться достаточно высоко, чтобы все компонуемые объекты, которым необходимо на него ссылаться, могли это делать.

Это позволяет использовать NavController в качестве единственного источника достоверной информации для обновления составных элементов вне ваших экранов. Это соответствует принципам поднятия состояния (state hoisting ).

Мнения

Если вы используете фреймворк Views UI, вы можете получить доступ к своему NavController одним из следующих способов в зависимости от контекста:

Котлин:

Java:

Как правило, сначала вы получаете NavHostFragment , а затем извлекаете NavController из фрагмента. Следующий фрагмент кода демонстрирует это:

Котлин

val navHostFragment =
    supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
val navController = navHostFragment.navController

Java

NavHostFragment navHostFragment =
    (NavHostFragment) getSupportFragmentManager().findFragmentById(R.id.nav_host_fragment);
NavController navController = navHostFragment.getNavController();

Дополнительная информация

  • Создайте свой навигационный граф : подробное руководство о том, как добавить граф в ваш NavController , содержащий все пункты назначения в вашем приложении.
  • Переход к месту назначения : руководство, подробно описывающее, как использовать NavController для перемещения между пунктами назначения в вашей навигационной карте.