Sobes.tech
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:

  1. 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)
}
  1. 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.
  2. State Hoisting

    • Staatuse edastamine ekraani funktsioonide parameetrite kaudu.
    • Sobib väikeste andmete ja kui ekraanid asuvad samas komponendis.
  3. 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.