Junior
Kuidas edastada andmeid ühest tegevusest teise Androidis?
sobes.tech AI
Vastus AI-lt
Andmeid saab edastada, kasutades Intent:
-
Algses Activitys: Asetage andmed Extras
Intent-i kaudu, kasutades meetodeid naguputExtra(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) -
Siht-Activitys: Tõmmake andmed Extras
Intent-ist, mis saadudonCreatevõionNewIntentmeetodites:// `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:
ViewModeljagamine Fragmentide/Activities vahel (SharedViewModel kaudu): Sobib ühiste andmete jaoks seotud komponentide vahel.Bundle(ExtrasIntent-i sees):putExtrakasutab tegelikultBundle-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.