Sobes.tech
Junior

Hogyan lehet adatokat átvinni egyik aktivitásból a másikba Androidban?

sobes.tech MI

Válasz az MI-től

Az adatok átadhatók Intent segítségével:

  1. A kiinduló Activity-ben: Helyezze az adatokat az Intent Extras részébe a putExtra(String key, value) módszerrel.

    // Intent előkészítése
    val intent = Intent(this, TargetActivity::class.java)
    // Adatok hozzáadása
    intent.putExtra("myString", "Helló az első Activity-ből")
    intent.putExtra("myInt", 123)
    intent.putExtra("myBool", true)
    // Olyan objektumokat is át lehet adni, amelyek Parcelable vagy Serializable-t implementálnak
    // intent.putExtra("myObject", myParcelableObject)
    
    // Új Activity indítása
    startActivity(intent)
    
  2. A cél Activity-ben: Szerezze meg az adatokat az Intent Extras-ból, amit a onCreate vagy onNewIntent metódusban kapott.

    // A cél Activity onCreate() metódusában
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_target)
    
        // Az Intent, ami elindította ezt az Activity-t
        val intent = intent
    
        // Adatok kinyerése kulcs szerint
        val myString = intent.getStringExtra("myString")
        val myInt = intent.getIntExtra("myInt", 0) // Második argumentum az alapértelmezett érték
        val myBool = intent.getBooleanExtra("myBool", false)
    
        // Az kinyert adatok feldolgozása
        println("Kapott szöveg: $myString")
        println("Kapott szám: $myInt")
        println("Kapott boolean: $myBool")
    
        // Parcelable vagy Serializable objektumok esetén
        // val myObject = intent.getParcelableExtra<MyParcelableClass>("myObject")
    }
    

Más adatmódosítási módszerek, amelyek alkalmasak összetettebb vagy nagyobb adatmennyiség esetén:

  • ViewModel megosztása Fragmentek/Activities között (SharedViewModel segítségével): Hasznos közös adatokhoz a kapcsolódó komponensek között.
  • Bundle (az Intent Extras-án belül): A putExtra valójában egy belső Bundle-t használ.
  • Statikus változók/singletonok: Óvatosan kell használni, mert memóriaszivárgáshoz és állapotproblémákhoz vezethet.
  • Adatbázis/SharedPreferences: Állandó tárolás vagy adatok továbbítása céljából, amelyek megőrzést igényelnek.
  • Event Bus (pl. EventBus, RxJava): Események vagy adatok aszinkron továbbítására a komponensek között.
  • File I/O: Fájlba mentés és onnan olvasás.