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

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

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

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

Сочинить

Чтобы создать NavController при использовании Jetpack Compose, вызовите rememberNavController() :

val navController = rememberNavController()

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

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

Просмотры

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

Котлин:

Ява:

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

Котлин

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

Ява

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

Дальнейшее чтение

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