Jetpack Compose Academy · Lektion

Videregivelse af argumenter mellem skærme

Send data med langs navigationsruten.

Lektion 3 af 413 trin

Videregivelse af argumenter mellem skærme er en gratis Jetpack Compose Academy-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Jetpack Compose Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Jetpack Compose Academy-kurset indeholder 4 lektioner i alt.

Skærme har brug for data

En detaljeskærm skal vide, hvilket element der skal vises. Navigation Compose lader dig føre disse data med i selve route.

Deklarér en pladsholder

Tilføj en placeholder i krøllede parenteser til en rute. Den markerer, hvor en værdi skal indsættes, når du navigerer.

composable("profile/{userId}") { backStackEntry ->
    ProfileScreen()
}

Definér argumentet

Angiv hver pladsholder i arguments, og giv den en type. Det fortæller Compose, hvordan værdien skal parses ud af ruten.

composable(
    "profile/{userId}",
    arguments = listOf(navArgument("userId") { type = NavType.IntType })
) { }

Send værdien

Hvis du vil sende data, skal du opbygge rutestrengen med den faktiske værdi i stedet for placeholder. Den modtagende skærm læser den ud igen.

navController.navigate("profile/42")

Læs den fra entryen

backStackEntry indeholder argumentpakken. Hent din værdi ved hjælp af det samme navn, som du deklarerede i ruten.

composable("profile/{userId}") { entry ->
    val id = entry.arguments?.getInt("userId")
    ProfileScreen(userId = id)
}

Vælg den rigtige NavType

NavType bestemmer parsingen: StringType, IntType, BoolType og flere. Tilpas den til dine data, så værdierne modtages med den korrekte type.

Valgfrie argumenter

Brug et forespørgselslignende optional argument med en standardværdi til data, der kan mangle, f.eks. et filter, der ikke altid er angivet.

composable(
    "search?query={query}",
    arguments = listOf(navArgument("query") { defaultValue = "" })
) { }

Send kun små datamængder

Ruteargumenter er til identifiers, ikke hele objekter. Send et id, og indlæs derefter alle dataene fra dit repository eller din ViewModel.

Kod vanskelige værdier

Strenge med skråstreger eller mellemrum kan ødelægge en rute. URL-encode dem før navigation, og dekod dem efter læsning, ligesom med en rigtig URL.

Lad ViewModel læse den

En ViewModel kan hente argumenter fra SavedStateHandle, så din skærm forbliver enkel og overlever gendannelse med de rigtige data.

class ProfileViewModel(state: SavedStateHandle) {
    val userId: Int = checkNotNull(state["userId"])
}

Hold argumentnavnene ens

Pladsholderen, navArgument og opslagstasten skal alle bruge det samme name. Et mismatch returnerer null i stedet for din værdi.

Hurtigt tjek

Hvordan skal du sende et komplekst element til en detaljeskærm?

Opsummering

Du kan nu sende data ved at tilføje en placeholder til en rute, angive typen med navArgument og læse den tilbage fra back stack-entryen. 📦

Gratis at komme i gang

Lær Kotlin med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
30
Lektioner
120

Ofte stillede spørgsmål

Er lektionen “Videregivelse af argumenter mellem skærme” gratis?

Ja — hele teksten til “Videregivelse af argumenter mellem skærme” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Jetpack Compose Academy-kurset, skal du opgradere til CoddyKit PRO. Jetpack Compose Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Videregivelse af argumenter mellem skærme”?

Send data med langs navigationsruten. Du øver dig i Jetpack Compose Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Jetpack Compose Academy?

Der kræves ingen tidligere erfaring. Jetpack Compose Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.

Hvor lang tid tager lektionen “Videregivelse af argumenter mellem skærme”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Jetpack Compose Academy-lektion?

Ja. Alle Jetpack Compose Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. NavController og NavHost
  2. Composable-destinationer og routes
  3. Videregivelse af argumenter mellem skærme
  4. Back stack og deep links
← Tilbage til Jetpack Compose Academy