Навигационный контроллер — одно из ключевых понятий в навигации. Он содержит граф навигации и предоставляет методы, которые позволяют вашему приложению перемещаться между пунктами назначения в графе.
При использовании компонента Navigation вы создаете контроллер навигации с помощью класса NavController
. NavController
— это центральный навигационный API. Он отслеживает, какие пункты назначения посетил пользователь, и позволяет пользователю перемещаться между пунктами назначения. В этом руководстве показано, как создать NavController
в вашем приложении.
Информацию о том, как добавить граф навигации в NavController
, см. в разделе Создание графа навигации . NavController
предоставляет несколько различных способов навигации к пунктам назначения на своем графике. Дополнительные сведения см. в разделе Навигация к месту назначения .
Сочинять
Чтобы создать NavController
при использовании Jetpack Compose, вызовите rememberNavController()
:
val navController = rememberNavController()
Вам следует создать NavController
в верхней части вашей составной иерархии. Оно должно быть достаточно высоким, чтобы все компонуемые объекты, которым необходимо ссылаться на него, могли это сделать.
Это позволит вам использовать NavController
как единственный источник достоверной информации для обновления компонуемых объектов за пределами ваших экранов. Это следует принципам государственного подъема .
Просмотры
Если вы используете платформу пользовательского интерфейса Views, вы можете получить свой NavController одним из следующих методов в зависимости от контекста:
Котлин:
Ява:
-
NavHostFragment.findNavController(Fragment)
-
Navigation.findNavController(Activity, @IdRes int viewId)
-
Navigation.findNavController(View)
Обычно вы сначала получаете 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
для перемещения между пунктами назначения на графике навигации.