画面ナビゲーションを実装する

アプリでは通常、多くの画面が表示されます。各画面はさまざまなテンプレートを利用し、ユーザーの操作に応じて移り変わるインターフェースを表示します。

ScreenManager クラスは、画面をプッシュしておく画面スタックを提供します。スタックの画面は、ユーザーが車の画面で [戻る] ボタンを選択するか、ハードウェアの [戻る] ボタン(一部の車で提供されています)を使用すると、自動的にポップします。

次のコードは、メッセージ テンプレートに、「戻る」というアクションと、これをユーザーが選択したときに新しい画面をプッシュするアクションを追加する方法を示しています。

Kotlin

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 オブジェクトは、自動的に ScreenManager.pop を呼び出す標準的な Action です。この動作は、CarContext が提供する OnBackPressedDispatcher インスタンスを使用してオーバーライドできます。

安全運転を促進するため、画面スタックは 5 つ以下の画面で構成できます。詳細については、テンプレートの制限事項をご覧ください。