Wie kann man Daten von einer Activity zu einer anderen in Android übertragen?
sobes.tech KI
Antwort von AI
Es gibt mehrere Möglichkeiten:
-
Intent-Extras: Die gebräuchlichste Methode. Die Daten werden in einem
Bundleverpackt und an denIntentangehängt.// In der ersten Activity Intent intent = new Intent(this, SecondActivity.class); intent.putExtra("Schlüssel", "Wert"); // Primitive Typen intent.putExtra("Objekt", new MySerializableObject()); // Serializable startActivity(intent); // In der zweiten Activity Bundle extras = getIntent().getExtras(); if (extras != null) { String wert = extras.getString("Schlüssel"); MySerializableObject objekt = (MySerializableObject) extras.getSerializable("Objekt"); } -
Parcelable-Objekte: Ähnlich wie
Serializable, aber effizienter für häufig übertragene Objekte. Erfordert die Implementierung desParcelable-Interfaces.// In der ersten Activity Intent intent = new Intent(this, SecondActivity.class); intent.putExtra("parcelable_objekt", new MyParcelableObject()); startActivity(intent); // In der zweiten Activity Intent intent = getIntent(); MyParcelableObject parcelableObjekt = intent.getParcelableExtra("parcelable_objekt"); -
Shared Preferences: Geeignet für kleine Datenmengen, die zwischen App-Starts gespeichert werden sollen.
// In der ersten Activity SharedPreferences preferences = getSharedPreferences("meine_prefs", MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.putString("Schlüssel", "Wert"); editor.apply(); // oder commit() // In der zweiten Activity SharedPreferences preferences = getSharedPreferences("meine_prefs", MODE_PRIVATE); String wert = preferences.getString("Schlüssel", null); // null ist der Standardwert -
Statische Variablen: Nicht empfohlen, da es gegen OOP-Prinzipien verstößt und zu Speicherlecks führen kann. Nur für sehr einfache Fälle mit Vorsicht verwenden.
// In einer statischen Klasse oder einer anderen zugänglichen statischen Variablen public static String statischeDaten; // In der ersten Activity StaticDataHolder.statischeDaten = "Daten"; // In der zweiten Activity String daten = StaticDataHolder.statischeDaten; -
Datenbank/Datei: Für große Datenmengen oder persistent zu speichernde Daten. Die Daten werden in einer Datenbank (SQLite, Room) oder Datei gespeichert und in der zweiten Activity gelesen.
-
ViewModel (gemeinsam mit LiveData): Im Kontext architektonischer Komponenten ist ViewModel die bevorzugte Methode zur Verwaltung von UI-bezogenen Daten. Daten zwischen Activities werden über ein gemeinsames ViewModel oder durch Ereignisse in LiveData übertragen.
// In der ersten Activity (Kotlin) val intent = Intent(this, SecondActivity::class.java).apply { putExtra("daten_schlüssel", "daten_wert") } startActivity(intent) // In der zweiten Activity (Kotlin) val daten = intent.getStringExtra("daten_schlüssel")
Die Wahl der Methode hängt vom Typ und Volumen der zu übertragenden Daten sowie von Persistenzanforderungen ab. Datenübertragung über Intent Extras ist Standard für kleine Datenmengen und direkte Übergänge zwischen Activities.