Junior
Cum se transmit datele dintr-o activitate în alta în Android?
sobes.tech AI
Răspuns de la AI
Datele pot fi transmise folosind Intent:
-
În Activity-ul sursă: Puneți datele în Extras-urile
Intentfolosind metode precumputExtra(String key, value).// Pregătirea Intent-ului val intent = Intent(this, TargetActivity::class.java) // Adăugarea datelor intent.putExtra("myString", "Salut din prima Activity") intent.putExtra("myInt", 123) intent.putExtra("myBool", true) // Puteți transmite obiecte care implementează Parcelable sau Serializable // intent.putExtra("myObject", myParcelableObject) // Pornirea noii Activity startActivity(intent) -
În Activity-ul țintă: Extrageți datele din Extras-urile
Intentprimite în metodaonCreatesauonNewIntent.// În onCreate() al Activity-ului țintă override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_target) // Obțineți Intent-ul care a lansat această Activity val intent = intent // Extrageți datele după cheie val myString = intent.getStringExtra("myString") val myInt = intent.getIntExtra("myInt", 0) // Al doilea argument este valoarea implicită val myBool = intent.getBooleanExtra("myBool", false) // Procesați datele extrase println("Șir primit: $myString") println("Număr primit: $myInt") println("Boolean primit: $myBool") // Pentru obiecte Parcelable sau Serializable // val myObject = intent.getParcelableExtra<MyParcelableClass>("myObject") }
Alte metode de transmitere a datelor, potrivite pentru scenarii mai complexe sau volume mari de date:
ViewModelpartajat între Fragments/Activities (prin SharedViewModel): Convenabil pentru date comune între componentele legate.Bundle(în interiorul Extras-urilor Intent):putExtrafolosește de fapt unBundleintern.- Variabile statice/singleton: Trebuie folosite cu precauție, pot duce la scurgeri de memorie și probleme de stare.
- Bază de date/SharedPreferences: Pentru stocare permanentă sau transmitere de date care necesită păstrare.
- Event Bus (de exemplu, EventBus, RxJava): Pentru transmiterea evenimentelor sau datelor între componente în mod asincron.
- File I/O: Salvare în fișier și citire din acesta.