Implementare la navigazione nelle schermate

Le app spesso presentano diverse schermate, ognuna delle quali potrebbe utilizzare modelli diversi in cui l'utente può navigare mentre interagisce con l'interfaccia.

La classe ScreenManager fornisce uno stack di schermate che puoi utilizzare per inserire schermate che possono essere rimosse automaticamente quando l'utente seleziona un pulsante Indietro sullo schermo dell'auto o utilizza il pulsante hardware Indietro disponibile in alcune auto.

Questo codice mostra come aggiungere un'azione Indietro a un modello di messaggio e un'azione per visualizzare una nuova schermata quando viene selezionata dall'utente:

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();

L'oggetto Action.BACK è un Action standard che richiama automaticamente ScreenManager.pop. Questo comportamento può essere sostituito utilizzando l'istanza OnBackPressedDispatcher disponibile da CarContext.

Per promuovere una guida sicura, lo stack di schermate non può contenere più di cinque schermate. Per saperne di più, consulta Limitazioni dei modelli.