Реализация экранной навигации

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

Класс 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 .

Для обеспечения безопасного вождения количество экранов в блоке не должно превышать пяти. Подробнее см. в разделе «Ограничения шаблона» .