Hogyan lehet adatokat átadni egyik Activity-ből a másikba Androidban?
sobes.tech MI
Válasz az MI-től
Néhány módszer létezik:
-
Intent Extras: A leggyakoribb módszer. Az adatok csomagolva vannak
Bundle-be, és hozzáadva azIntent-hez.// Az első Activity-ben Intent intent = new Intent(this, SecondActivity.class); intent.putExtra("kulcs", "érték"); // Alapvető típusok intent.putExtra("objektum", new MySerializableObject()); // Serializable startActivity(intent); // A második Activity-ben Bundle extras = getIntent().getExtras(); if (extras != null) { String érték = extras.getString("kulcs"); MySerializableObject objektum = (MySerializableObject) extras.getSerializable("objektum"); } -
Parcelable Objects: Hasonló a
Serializable-hez, de hatékonyabb azoknál az objektumoknál, amelyeket gyakran kell átadni. Megköveteli aParcelableinterfész megvalósítását.// Az első Activity-ben Intent intent = new Intent(this, SecondActivity.class); intent.putExtra("parcelable_objektum", new MyParcelableObject()); startActivity(intent); // A második Activity-ben Intent intent = getIntent(); MyParcelableObject parcelableObjektum = intent.getParcelableExtra("parcelable_objektum"); -
Shared Preferences: Kisebb adatmennyiség átadására alkalmas, amelyeket meg kell tartani az alkalmazás indításai között.
// Az első Activity-ben SharedPreferences preferences = getSharedPreferences("my_prefs", MODE_PRIVATE); SharedPreferences.Editor szerkesztő = preferences.edit(); szerkesztő.putString("kulcs", "érték"); szerkesztő.apply(); // vagy commit() // A második Activity-ben SharedPreferences preferences = getSharedPreferences("my_prefs", MODE_PRIVATE); String érték = preferences.getString("kulcs", null); // null az alapértelmezett érték -
Statikus változók: Nem ajánlott, mivel megsérti az OOP elveit, és memóriaszivárgáshoz vezethet. Csak nagyon egyszerű esetekben használja óvatosan.
// Egy statikus osztályban vagy más elérhető statikus változóban public static String staticData; // Az első Activity-ben StaticDataHolder.staticData = "adatok"; // A második Activity-ben String adatok = StaticDataHolder.staticData; -
Adatbázis/Fájl: Nagyobb adatmennyiség vagy tartós adat esetén. Az adatok adatbázisban (SQLite, Room) vagy fájlban tárolódnak, és a második Activity olvassa őket.
-
ViewModel (együtt LiveData-val): Az architekturális komponensek kontextusában a ViewModel az előnyben részesített módszer a UI-hoz kötött adatok kezelésére. Az adatok az Activity-k között shared ViewModel vagy LiveData eseményeken keresztül kerülnek átadásra.
// Az első Activity-ben (Kotlin) val intent = Intent(this, SecondActivity::class.java).apply { putExtra("adat_kulcs", "adat_érték") } startActivity(intent) // A második Activity-ben (Kotlin) val adat = intent.getStringExtra("adat_kulcs")
A módszer kiválasztása az átadott adatok típusától és mennyiségétől, valamint a tartóssági követelményektől függ. Az adatok átadása Intent Extras-en keresztül a kis adatmennyiség és az Activity közötti közvetlen átmenet esetén a szabványos módszer.