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:
-
A kiinduló Activity-ben: Helyezze az adatokat az
IntentExtras részébe aputExtra(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) -
A cél Activity-ben: Szerezze meg az adatokat az Intent Extras-ból, amit a
onCreatevagyonNewIntentmetó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:
ViewModelmegosztá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): AputExtravaló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.