Junior
Kaip perduoti duomenis iš vienos veiklos į kitą Android?
sobes.tech AI
Atsakymas iš AI
Duomenis galima perduoti naudojant Intent:
-
Pradiniame Activity: Įdėkite duomenis į Extras
Intentnaudojant metodus kaipputExtra(String key, value):// Intent paruošimas val intent = Intent(this, TargetActivity::class.java) // Duomenų pridėjimas intent.putExtra("myString", "Sveiki iš pirmojo Activity") intent.putExtra("myInt", 123) intent.putExtra("myBool", true) // Galima perduoti objektus, kurie įgyvendina Parcelable arba Serializable // intent.putExtra("myObject", myParcelableObject) // Naujo Activity paleidimas startActivity(intent) -
Tikslo Activity: Ištraukite duomenis iš Extras
Intent, gautoonCreatearbaonNewIntentmetode:// `onCreate()` tikslo Activity override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_target) // Gaukite Intent, kuris paleido šį Activity val intent = intent // Ištraukite duomenis pagal raktą val myString = intent.getStringExtra("myString") val myInt = intent.getIntExtra("myInt", 0) // Antras argumentas - numatytoji reikšmė val myBool = intent.getBooleanExtra("myBool", false) // Apdorokite išgautus duomenis println("Gauta eilutė: $myString") println("Gauta skaičius: $myInt") println("Gauta boolean: $myBool") // Parcelable ar Serializable objektams // val myObject = intent.getParcelableExtra<MyParcelableClass>("myObject") }
Kitos duomenų perdavimo metodai, tinkami sudėtingesniems scenarijams arba dideliam duomenų kiekiui:
ViewModelbendrinimas tarp Fragmentų/Activity (per SharedViewModel): Patogu bendriems duomenims tarp susijusių komponentų.Bundle(ExtrasIntentviduje):putExtraiš tikrųjų naudojaBundleviduje.- Statinės kintamosios/singletonai: Reikia naudoti atsargiai, gali sukelti atminties nutekėjimą ir būsenos problemas.
- Duomenų bazė/SharedPreferences: Nuolatinis saugojimas arba duomenų perdavimas, reikalaujantis išsaugojimo.
- Event Bus (pvz., EventBus, RxJava): Renginių arba duomenų perdavimas asinchroniškai.
- Failų įvestis/išvestis: Saugojimas faile ir skaitymas iš jo.