Sobes.tech
Junior

Ako preniesť údaje z jednej aktivity do druhej v Android?

sobes.tech AI

Odpoveď od AI

Dáta je možné preniesť pomocou Intent:

  1. V pôvodnej Activity: Umiestnite dáta do Extras Intent pomocou metód ako putExtra(String key, value).

    // Príprava Intent
    val intent = Intent(this, TargetActivity::class.java)
    // Pridanie dát
    intent.putExtra("myString", "Ahoj z prvého Activity")
    intent.putExtra("myInt", 123)
    intent.putExtra("myBool", true)
    // Môžete prenášať objekty, ktoré implementujú Parcelable alebo Serializable
    // intent.putExtra("myObject", myParcelableObject)
    
    // Spustenie nového Activity
    startActivity(intent)
    
  2. V cieľovej Activity: Vyberte dáta z Extras Intent, ktoré ste získali v metóde onCreate alebo onNewIntent.

    // V onCreate() cieľového Activity
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_target)
    
        // Získanie Intent, ktorý spustil toto Activity
        val intent = intent
    
        // Vyberanie dát podľa kľúča
        val myString = intent.getStringExtra("myString")
        val myInt = intent.getIntExtra("myInt", 0) // Druhý argument je predvolená hodnota
        val myBool = intent.getBooleanExtra("myBool", false)
    
        // Spracovanie získaných dát
        println("Prijatý reťazec: $myString")
        println("Prijaté číslo: $myInt")
        println("Prijaté boolean: $myBool")
    
        // Pre Parcelable alebo Serializable objekty
        // val myObject = intent.getParcelableExtra<MyParcelableClass>("myObject")
    }
    

Iné metódy prenosu dát vhodné pre zložitejšie scenáre alebo veľké objemy dát:

  • ViewModel zdieľaný medzi Fragmentmi/Activities (cez SharedViewModel): Vhodné pre spoločné dáta medzi prepojenými komponentmi.
  • Bundle (vo vnútri Extras Intent): putExtra v skutočnosti používa Bundle vo vnútri.
  • Statické premenné/singletony: Treba ich používať opatrne, môžu viesť k únikom pamäte a problémom so stavom.
  • Databáza/SharedPreferences: Pre trvalé uloženie alebo prenos dát, ktoré vyžadujú zachovanie.
  • Event Bus (napr. EventBus, RxJava): Pre prenos udalostí alebo dát medzi komponentmi asynchrónne.
  • File I/O: Uloženie do súboru a čítanie z neho.