Currentscreen vom Navigator -Controller erhalten

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Currentscreen vom Navigator -Controller erhalten

by Anonymous » 01 Mar 2025, 13:55

Ich implementiere einen Navigationscontroller für meine App: https://developer.android.com/guide/nav ... controller.
Ich habe das folgende Bildschirmschnittstellen mit einigen Instanzen davon definiert:

Code: Select all

interface Screen {
/**
* Unique name to define the path for a composable
*/
val route: String

/**
* String resource id to that contains title to be displayed for the screen.
*/
val title: Int
}

object WelcomeDestination : Screen {
override val route = "welcome"
override val title = R.string.app_name
}

object AnotherDestination : Screen {
override val route = "another"
override val title = R.string.title_another
}
< /code>
Ich definiere die App mit dem ViewController und dem Navcontroller. Dann möchte ich die aktuelle Bildschirminstanz mit Toroute () aus dem Navigation Controller erhalten: < /p>
@Composable
fun MyApp(
navController: NavHostController = rememberNavController(),
) {
val backStackEntry by navController.currentBackStackEntryAsState()
val currentScreen : Screen = backStackEntry?.toRoute() ?: WelcomeDestination
}
< /code>
, aber ich erhalte diesen Fehler in der Ausführungszeit: < /p>
java.lang.IllegalArgumentException: Polymorphic value has not been read for class null
Ich denke, es könnte daran liegen, dass ich Objektinstanzen verwende. Vielleicht sollte ich meine Implementierung in eine @Serializable -Klasse mit Data -Objekt und Datenklasse in dieser Klasse für jede Bildschirmoption ändern? Aber ich bin mir nicht sicher, ob das das Problem lösen würde.>

Top