Ako preniesť údaje z jednej Activity do druhej v Android?
sobes.tech AI
Odpoveď od AI
Existuje niekoľko spôsobov:
-
Intent Extras: Najbežnejší spôsob. Dáta sa balia do
Bundlea pridávajú sa kIntent.// V prvej Activity Intent intent = new Intent(this, SecondActivity.class); intent.putExtra("kľúč", "hodnota"); // Primitívne typy intent.putExtra("objekt", new MySerializableObject()); // Serializable startActivity(intent); // V druhej Activity Bundle extras = getIntent().getExtras(); if (extras != null) { String hodnota = extras.getString("kľúč"); MySerializableObject objekt = (MySerializableObject) extras.getSerializable("objekt"); } -
Parcelable objekty: Podobne ako
Serializable, ale efektívnejšie pre objekty, ktoré je potrebné často prenášať. Vyžaduje implementáciu rozhraniaParcelable.// V prvej Activity Intent intent = new Intent(this, SecondActivity.class); intent.putExtra("parcelable_objekt", new MyParcelableObject()); startActivity(intent); // V druhej Activity Intent intent = getIntent(); MyParcelableObject parcelableObjekt = intent.getParcelableExtra("parcelable_objekt"); -
Shared Preferences: Vhodné na prenos malých objemov dát, ktoré majú byť zachované medzi spusteniami aplikácie.
// V prvej Activity SharedPreferences preferences = getSharedPreferences("my_prefs", MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.putString("kľúč", "hodnota"); editor.apply(); // alebo commit() // V druhej Activity SharedPreferences preferences = getSharedPreferences("my_prefs", MODE_PRIVATE); String hodnota = preferences.getString("kľúč", null); // null je predvolená hodnota -
Statické premenné: Neodporúča sa, pretože narušuje princípy OOP a môže viesť k únikom pamäte. Používajte s opatrnosťou a len pre veľmi jednoduché prípady.
// V statickej triede alebo inej dostupnej statickej premennej public static String staticData; // V prvej Activity StaticDataHolder.staticData = "údaje"; // V druhej Activity String údaje = StaticDataHolder.staticData; -
Databáza/Súbor: Pre väčšie objemy dát alebo dáta, ktoré musia byť perzistentné. Dáta sa ukladajú do databázy (SQLite, Room) alebo súboru a druhá Activity ich číta.
-
ViewModel (spolu s LiveData): V kontexte architektonických komponentov je ViewModel preferovaným spôsobom správy dát UI-viaženej logiky. Dáta medzi Activity sa prenášajú cez shared ViewModel alebo cez udalosti na LiveData.
// V prvej Activity (Kotlin) val intent = Intent(this, SecondActivity::class.java).apply { putExtra("data_key", "data_value") } startActivity(intent) // V druhej Activity (Kotlin) val data = intent.getStringExtra("data_key")
Výber spôsobu závisí od typu a objemu prenášaných dát, ako aj od požiadaviek na perzistenciu. Prenos dát cez Intent Extras je štandardom pre malé objemy dát a pri priamom prechode medzi Activity.