Hoe kun je gegevens van de ene Activity naar de andere in Android overdragen?
sobes.tech AI
Antwoord van AI
Er zijn verschillende manieren:
-
Intent Extras: De meest gebruikelijke manier. Gegevens worden verpakt in een
Bundleen toegevoegd aan deIntent.// In de eerste Activity Intent intent = new Intent(this, SecondActivity.class); intent.putExtra("sleutel", "waarde"); // Primitieve types intent.putExtra("object", new MySerializableObject()); // Serializable startActivity(intent); // In de tweede Activity Bundle extras = getIntent().getExtras(); if (extras != null) { String waarde = extras.getString("sleutel"); MySerializableObject object = (MySerializableObject) extras.getSerializable("object"); } -
Parcelable Objecten: Vergelijkbaar met
Serializable, maar efficiënter voor vaak overgedragen objecten. Vereist implementatie van deParcelableinterface.// In de eerste Activity Intent intent = new Intent(this, SecondActivity.class); intent.putExtra("parcelable_object", new MyParcelableObject()); startActivity(intent); // In de tweede Activity Intent intent = getIntent(); MyParcelableObject parcelableObject = intent.getParcelableExtra("parcelable_object"); -
Shared Preferences: Geschikt voor het overdragen van kleine hoeveelheden gegevens die tussen app-starts bewaard moeten blijven.
// In de eerste Activity SharedPreferences preferences = getSharedPreferences("mijn_prefs", MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.putString("sleutel", "waarde"); editor.apply(); // of commit() // In de tweede Activity SharedPreferences preferences = getSharedPreferences("mijn_prefs", MODE_PRIVATE); String waarde = preferences.getString("sleutel", null); // null is de standaardwaarde -
Statische variabelen: Niet aanbevolen, omdat het de principes van OOP schendt en geheugenlekken kan veroorzaken. Gebruik het voorzichtig en alleen voor zeer eenvoudige gevallen.
// In een statische klasse of andere toegankelijke statische variabele public static String statischeData; // In de eerste Activity StaticDataHolder.statischeData = "gegevens"; // In de tweede Activity String gegevens = StaticDataHolder.statischeData; -
Database/Bestand: Voor grote hoeveelheden gegevens of gegevens die persistent moeten zijn. Gegevens worden opgeslagen in een database (SQLite, Room) of bestand en gelezen door de tweede Activity.
-
ViewModel (samen met LiveData): In de context van architectuurcomponenten is ViewModel de voorkeursmethode voor het beheren van UI-gerelateerde gegevens. Gegevens tussen Activity's worden via een gedeeld ViewModel of via gebeurtenissen op LiveData doorgegeven.
// In de eerste Activity (Kotlin) val intent = Intent(this, SecondActivity::class.java).apply { putExtra("gegevens_sleutel", "gegevens_waarde") } startActivity(intent) // In de tweede Activity (Kotlin) val gegevens = intent.getStringExtra("gegevens_sleutel")
De keuze van methode hangt af van het type en de omvang van de gegevens die worden overgedragen, evenals van de vereisten voor persistentie. Gegevensoverdracht via Intent Extras is de standaard voor kleine gegevenshoeveelheden en directe overgangen tussen Activity's.