Android Compose-Navigationsargumente wurden unnötig gespeichertAndroid

Forum für diejenigen, die für Android programmieren
Anonymous
 Android Compose-Navigationsargumente wurden unnötig gespeichert

Post by Anonymous »

Bei der Verwendung von Android Navigation Compose gibt es ein Problem mit gespeicherten Navigationsargumenten.
Zum Beispiel habe ich Routen:

Code: Select all

@Serializable
object ScreenA

@Serializable
data class ScreenB(val id: Long? = null)

@Serializable
object ScreenC
Zuerst navigiere ich mit Parametern von ScreenA zu ScreenB und öffne ComposableScreenB:

Code: Select all

...
navController.navigate(ScreenB(3L))
...
composable { backStackEntry ->
ComposableScreenB(
id: () -> Long? = { backStackEntry.savedStateHandle.toRoute().id }
)
}
Ich verwende den Parameterwert, um einen komplexeren internen veränderlichen Zustand von ComposableScreenB zu initiieren und dann ist der Navigationsparameterwert unnötig. Wenn id == null, verwendet ComposableScreenB eine interne Konstante (die ScreenA nicht kennt) für die erste Initialisierung und unternimmt nichts, wenn die Initialisierung bereits stattgefunden hat. Außerdem kann id für die Neuinitialisierung von ScreenB verwendet werden (z. B. über einen Deep Link), sodass ich den Parameter nicht vollständig ignorieren kann, wenn ComposableScreenB initialisiert wird.
Aber nach der Navigation zu ScreenC und der Navigation nach oben zu ScreenB durch navController.popBackStack(inklusive = true) hat der Parameter id wieder den Wert 3L, wie er beim Start von empfangen wurde ScreenA und ComposableScreenB werden durch diese ID neu initialisiert.
Wie vermeide ich das Speichern alter Navigationsparameter?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post