Android Academy · Lektion

Intents och navigering

Navigera mellan Activities med explicita Intents, skicka data med putExtra/getExtra och starta externa appar med implicita Intents.

Lektion 5 av 711 steg

Intents och navigering är en gratis lektion i Android Academy på CoddyKit. Detta är lektion 5 av 7. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Android Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Android Academy innehåller totalt 7 lektioner.

Vad är en Intent?

En Intent är ett meddelande som talar om för Android att något ska göras:

  • Explicit Intent – startar en specifik Activity i din app
  • Implicit Intent – ber Android hitta en app som kan hantera åtgärden (öppna en URL, ringa ett nummer eller dela text)

Intents är det huvudsakliga sättet för Activities att kommunicera med varandra.

Explicit Intent: Öppna en skärm

Starta en annan Activity i din app:

// In your button click listener:
binding.btnGoToDetail.setOnClickListener {
    val intent = Intent(this, DetailActivity::class.java)
    startActivity(intent)
}

// To also close the current screen after navigating:
binding.btnLogin.setOnClickListener {
    val intent = Intent(this, HomeActivity::class.java)
    startActivity(intent)
    finish() // removes LoginActivity from back stack
}

Skicka data med extras

Använd extras för att skicka data till nästa Activity:

  • intent.putExtra("key", value) – bifoga data
  • intent.getStringExtra("key") – hämta en String
  • intent.getIntExtra("key", defaultValue) – hämta en Int

Använd konstanter för nycklar för att undvika stavfel.

Skicka och ta emot extras

Skicka data från en Activity och läs den i nästa:

// Sending Activity:
val intent = Intent(this, DetailActivity::class.java)
intent.putExtra("PRODUCT_ID", 42)
intent.putExtra("PRODUCT_NAME", "Laptop")
startActivity(intent)

// DetailActivity — receiving:
class DetailActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_detail)

        val id = intent.getIntExtra("PRODUCT_ID", -1)
        val name = intent.getStringExtra("PRODUCT_NAME") ?: ""
        // Use id and name to load data
    }
}

Implicita Intents

Med implicita Intents kan din app använda funktioner från andra installerade appar utan att veta vilken app som hanterar dem:

  • Öppna en webbadress i webbläsaren
  • Ringa ett telefonnummer
  • Skicka ett e-postmeddelande
  • Dela text med valfri app

Android visar en appväljare om flera appar kan hantera intenten.

Vanliga implicita Intents

Starta systemåtgärder med implicita Intents:

import android.content.Intent
import android.net.Uri

// Open a web page
val webIntent = Intent(Intent.ACTION_VIEW,
    Uri.parse("https://developer.android.com"))
startActivity(webIntent)

// Dial a phone number
val dialIntent = Intent(Intent.ACTION_DIAL,
    Uri.parse("tel:+15551234567"))
startActivity(dialIntent)

// Share text
val shareIntent = Intent(Intent.ACTION_SEND).apply {
    type = "text/plain"
    putExtra(Intent.EXTRA_TEXT, "Check out this app!")
}
startActivity(Intent.createChooser(shareIntent, "Share via"))

Hämta tillbaka resultat

När du behöver ett resultat från en annan skärm (till exempel en bildväljare eller ett formulär) använder du Activity Result API:

  • Registrera en launcher med registerForActivityResult
  • Starta den vid behov
  • Hantera resultatet i en callback

Detta ersätter det äldre mönstret med startActivityForResult / onActivityResult.

Exempel på Result API

Begär ett foto från galleriet och ta emot det:

import androidx.activity.result.contract.ActivityResultContracts

class MainActivity : AppCompatActivity() {

    private val pickImage = registerForActivityResult(
        ActivityResultContracts.GetContent()
    ) { uri ->
        // 'uri' is the selected image URI, or null if cancelled
        if (uri != null) {
            binding.ivPhoto.setImageURI(uri)
        }
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // ...
        binding.btnPickPhoto.setOnClickListener {
            pickImage.launch("image/*")
        }
    }
}

Deep links

En deep link är en URL som öppnar en specifik skärm direkt i din app – användbart för pushnotiser och marknadsföringslänkar.

Deklarera deep links i AndroidManifest.xml med intent-filter och en data-tagg som anger URL-schemat och värden.

Snabbkontroll

Vilken typ av Intent skulle du använda för att öppna en webbplats i användarens webbläsare?

Sammanfattning: Intents och navigering

Nu kan du navigera mellan skärmar och starta systemfunktioner:

  • Explicit Intent – starta en specifik Activity i din app
  • putExtra / getExtra – skicka data mellan Activities
  • Implicit Intent – öppna URL:er, ringa nummer och dela innehåll
  • Activity Result API – ta emot data från en annan Activity

Nästa steg: visa dynamiska listor med RecyclerView.

Gratis att börja

Lär dig Kotlin med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
36
Lektioner
152

Vanliga frågor

Är lektionen ”Intents och navigering” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Android Academy, inklusive ”Intents och navigering”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Android Academy innehåller totalt 7 lektioner.

Vad lär jag mig i ”Intents och navigering”?

Navigera mellan Activities med explicita Intents, skicka data med putExtra/getExtra och starta externa appar med implicita Intents. Ni övar på Android Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Android Academy?

Du behöver inga förkunskaper. Utbildningen i Android Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 5 av 7.

Hur lång tid tar lektionen ”Intents och navigering”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Android Academy-lektionen?

Ja. Varje Android Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Projektstruktur och manifest
  2. Aktiviteter och livscykel
  3. Layouter och vyer
  4. Hantera användarinmatning
  5. Intents och navigering
  6. Fragments
  7. Behörigheter och begäranden under körning
← Tillbaka till Android Academy