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

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

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

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