Sobes.tech
Junior

Kuidas edastada andmeid ühest tegevusest teise Androidis?

sobes.tech AI

Vastus AI-lt

Andmeid saab edastada, kasutades Intent:

  1. Algses Activitys: Asetage andmed Extras Intent-i kaudu, kasutades meetodeid nagu putExtra(String key, value):

    // Intenti ettevalmistamine
    val intent = Intent(this, TargetActivity::class.java)
    // Andmete lisamine
    intent.putExtra("myString", "Tervitused esimesest Activityst")
    intent.putExtra("myInt", 123)
    intent.putExtra("myBool", true)
    // Võite edastada ka Parcelable või Serializable-iga objekte
    // intent.putExtra("myObject", myParcelableObject)
    
    // Uue Activity käivitamine
    startActivity(intent)
    
  2. Siht-Activitys: Tõmmake andmed Extras Intent-ist, mis saadud onCreate või onNewIntent meetodites:

    // `onCreate()` siht-Activitys
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_target)
    
        // Saadud Intent, mis käivitas selle Activity
        val intent = intent
    
        // Andmete väljavõtmine võtme järgi
        val myString = intent.getStringExtra("myString")
        val myInt = intent.getIntExtra("myInt", 0) // Teine argument - vaikimisi väärtus
        val myBool = intent.getBooleanExtra("myBool", false)
    
        // Väljavõetud andmete töötlemine
        println("Saadud rida: $myString")
        println("Saadud number: $myInt")
        println("Saadud boolean: $myBool")
    
        // Parcelable või Serializable objektide jaoks
        // val myObject = intent.getParcelableExtra<MyParcelableClass>("myObject")
    }
    

Teised andmete edastamise meetodid, sobivad keerulisemate stsenaariumide või suurema andmemahtude jaoks:

  • ViewModel jagamine Fragmentide/Activities vahel (SharedViewModel kaudu): Sobib ühiste andmete jaoks seotud komponentide vahel.
  • Bundle (Extras Intent-i sees): putExtra kasutab tegelikult Bundle-i sees.
  • Statilised muutujad/singletonid: Tuleb kasutada ettevaatusega, võivad põhjustada mälulekkeid ja olekuprobleeme.
  • Andmebaas/SharedPreferences: Püsiv salvestus või andmete edastamine, mis nõuavad säilitamist.
  • Event Bus (nt EventBus, RxJava): Sündmuste või andmete edastamine asünkroonselt.
  • Faili I/O: Salvestamine faili ja lugemine sellest.