Intents och navigering
Navigera mellan Activities med explicita Intents, skicka data med putExtra/getExtra och starta externa appar med implicita Intents.
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 dataintent.getStringExtra("key")– hämta en Stringintent.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.
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
- Projektstruktur och manifest
- Aktiviteter och livscykel
- Layouter och vyer
- Hantera användarinmatning
- Intents och navigering
- Fragments
- Behörigheter och begäranden under körning