Intentit ja navigointi
Siirtykää Activityjen välillä eksplisiittisillä Intenteillä, välittäkää tietoja putExtra/getExtra-menetelmillä ja käynnistäkää ulkoisia sovelluksia implisiittisillä Intenteillä.
Intentit ja navigointi on ilmainen Android Academy-oppitunti CoddyKitissä. Tämä on oppitunti 5/7. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Android Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Android Academy-kurssilla on yhteensä 7 oppituntia.
Mikä Intent on?
Intent on viesti, joka käskee Androidia tekemään jotakin:
- Explicit Intent — käynnistää tietyn Activityn sovelluksessasi
- Implicit Intent — pyytää Androidia etsimään toiminnon käsittelevän sovelluksen (URL-osoitteen avaaminen, numeroon soittaminen tai tekstin jakaminen)
Intentit ovat tärkein tapa, jolla Activityt viestivät keskenään.
Explicit Intent: näytön avaaminen
Käynnistä toinen Activity sovelluksessasi:
// 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
}Tietojen välittäminen Extras-arvoilla
Käytä extras-arvoja tietojen välittämiseen seuraavalle Activitylle:
intent.putExtra("key", value)— liittää tietojaintent.getStringExtra("key")— hakee String-arvonintent.getIntExtra("key", defaultValue)— hakee Int-arvon
Käytä avaimille vakioita kirjoitusvirheiden välttämiseksi.
Extras-arvojen välittäminen ja vastaanottaminen
Lähetä tietoja yhdestä Activitystä ja lue ne seuraavassa:
// 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
}
}Implicit Intentit
Implicit Intentien avulla sovelluksesi voi käyttää muiden asennettujen sovellusten toimintoja tietämättä, mikä sovellus käsittelee toiminnon:
- Avaa verkkosivun URL-osoite selaimessa
- Valitse puhelinnumero
- Lähetä sähköpostia
- Jaa teksti mihin tahansa sovellukseen
Android näyttää valintaikkunan, jos Intentin voi käsitellä useampi sovellus.
Yleiset Implicit Intentit
Käynnistä järjestelmän toimintoja Implicit Intentien avulla:
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"))Tulosten vastaanottaminen
Kun tarvitset tuloksen toiselta näytöltä (esimerkiksi kuvavalitsimesta tai lomakkeesta), käytä Activity Result APIa:
- Rekisteröi käynnistin
registerForActivityResult-metodilla - Käynnistä se tarvittaessa
- Käsittele tulos callback-funktiossa
Tämä korvaa vanhan startActivityForResult / onActivityResult -mallin.
Result API -esimerkki
Pyydä kuva galleriasta ja vastaanota se:
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 linkit
Deep link on URL-osoite, joka avaa suoraan tietyn näytön sovelluksessasi. Se on hyödyllinen push-ilmoituksissa ja markkinointilinkeissä.
Määritä deep linkit AndroidManifest.xml-tiedostossa käyttämällä intent-filter-elementtiä ja sen sisältämää data-tagia, joka määrittää URL-osoitteen skeeman ja isännän.
Pikatarkistus
Minkä tyyppistä Intentiä käyttäisit verkkosivuston avaamiseen käyttäjän selaimessa?
Kertaus: Intentit ja navigointi
Osaat nyt siirtyä näyttöjen välillä ja käynnistää järjestelmän toimintoja:
- Explicit Intent — käynnistää tietyn Activityn sovelluksessasi
putExtra/getExtra— välittää tietoja Activityjen välillä- Implicit Intent — avaa URL-osoitteita, valitsee numeroita ja jakaa sisältöä
- Activity Result API — vastaanottaa tietoja toiselta Activityltä
Seuraavaksi: näytä dynaamisia listoja RecyclerView'n avulla.
Opi Kotlin tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 36
- Oppitunnit
- 152
Usein kysytyt kysymykset
Onko oppitunti ”Intentit ja navigointi” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Android Academy-oppimispolun 3 oppituntia, myös oppitunnin “Intentit ja navigointi”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Android Academy-kurssilla on yhteensä 7 oppituntia.
Mitä opin oppitunnilla ”Intentit ja navigointi”?
Siirtykää Activityjen välillä eksplisiittisillä Intenteillä, välittäkää tietoja putExtra/getExtra-menetelmillä ja käynnistäkää ulkoisia sovelluksia implisiittisillä Intenteillä. Harjoittelet Android Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Android Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Android Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 5/7.
Kuinka kauan ”Intentit ja navigointi”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Android Academy-oppitunnilla?
Kyllä. Jokainen Android Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Projektin rakenne ja manifesti
- Aktiviteetit ja elinkaari
- Asettelu ja näkymät
- Käyttäjän syötteen käsittely
- Intentit ja navigointi
- Fragmentit
- Käyttöoikeudet ja ajonaikaiset pyynnöt