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:
-
V pôvodnej Activity: Umiestnite dáta do Extras
Intentpomocou metód akoputExtra(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) -
V cieľovej Activity: Vyberte dáta z Extras
Intent, ktoré ste získali v metódeonCreatealeboonNewIntent.// 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:
ViewModelzdieľaný medzi Fragmentmi/Activities (cez SharedViewModel): Vhodné pre spoločné dáta medzi prepojenými komponentmi.Bundle(vo vnútri Extras Intent):putExtrav skutočnosti používaBundlevo 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.