Junior — Middle
Milliste meetoditega saab Jetpack Compose Navigation kasutamisel ekraanide vahel andmete edastamist rakendada?
sobes.tech AI
Vastus AI-lt
Jetpack Compose Navigationis on mitu lähenemisviisi andmete edastamiseks ekraanide vahel:
- Navigation Arguments
- Rea deklaratsiooni tehes saate määrata parameetreid, mis edastatakse järgmisele ekraanile.
- Toetavad primitiivsed tüübid ja stringid.
- Näide id edastamisest:
navController.navigate("detail_screen/$itemId")
composable("detail_screen/{itemId}") { backStackEntry ->
val itemId = backStackEntry.arguments?.getString("itemId")
DetailScreen(itemId)
}
-
Shared ViewModel
- Kasutatakse ViewModel-i, mis elab navigatsioonigraafiku või tegevuse tasemel.
- Mõlemad ekraanid saavad juurde pääseda samale ViewModel eksemplarile ja vahetada andmeid selle kaudu.
-
State Hoisting
- Staatuse edastamine ekraani funktsioonide parameetrite kaudu.
- Sobib väikeste andmete ja kui ekraanid asuvad samas komponendis.
-
Andmete salvestamine NavBackStackEntry.savedStateHandle'is
- Andmeid saab salvestada savedStateHandle'i enne tagasipöördumist eelmise ekraani juurde.
- See võimaldab andmeid tagasi saata.
Näide savedStateHandle kasutamisest:
// Andmete tagasisaatmine
navController.currentBackStackEntry?.savedStateHandle?.set("key", value)
// Andmete saamine eelmisest ekraanist
val savedStateHandle = navController.previousBackStackEntry?.savedStateHandle
val value = savedStateHandle?.get<String>("key")
Seega, meetodi valik sõltub andmete tüübist ja mahust ning rakenduse arhitektuurist.