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

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

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

Этот код демонстрирует, как добавить действие «Назад» в шаблон сообщения, а также действие для перехода на новый экран при выборе пользователем:

Котлин

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

Java

MessageTemplate template = new MessageTemplate.Builder("Hello world!")
    .setHeaderAction(Action.BACK)
    .addAction(
        new Action.Builder()
            .setTitle("Next screen")
            .setOnClickListener(
                () -> getScreenManager().push(new NextScreen(getCarContext())))
            .build())
    .build();

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

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