Android Academy · Oppitunti

Intentit ja navigointi

Siirtykää Activityjen välillä eksplisiittisillä Intenteillä, välittäkää tietoja putExtra/getExtra-menetelmillä ja käynnistäkää ulkoisia sovelluksia implisiittisillä Intenteillä.

Oppitunti 5/711 vaihetta

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ää tietoja
  • intent.getStringExtra("key") — hakee String-arvon
  • intent.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.

Aloita maksutta

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

  1. Projektin rakenne ja manifesti
  2. Aktiviteetit ja elinkaari
  3. Asettelu ja näkymät
  4. Käyttäjän syötteen käsittely
  5. Intentit ja navigointi
  6. Fragmentit
  7. Käyttöoikeudet ja ajonaikaiset pyynnöt
← Takaisin: Android Academy