Как реализовать навигацию по экрану

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

Класс ScreenManager предоставляет стек экранов, которые можно добавлять и автоматически удалять, когда пользователь нажимает кнопку Назад на экране автомобиля или аппаратную кнопку Назад, доступную в некоторых автомобилях.

В этом коде показано, как добавить в шаблон сообщения действие "Назад", а также действие, которое при выборе пользователем позволяет перейти на новый экран:

val header = Header.Builder()
    .setStartHeaderAction(Action.BACK)
    .build()

val template = MessageTemplate.Builder("Hello world!")
    .setHeader(header)
    .addAction(
        Action.Builder()
            .setTitle("Next screen")
            .setOnClickListener { screenManager.push(NextScreen(carContext)) }
            .build()
    )
    .build()

Объект Action.BACK – это стандартный объект Action, который автоматически вызывает ScreenManager.pop. Это поведение можно переопределить, используя экземпляр OnBackPressedDispatcher, доступный из CarContext.

Чтобы не отвлекать водителя, в стеке может быть не более пяти экранов. Подробнее об ограничениях на использование шаблонов…