Sobes.tech
Junior

Wie überträgt man Daten von einer Aktivität zur anderen in Android?

sobes.tech KI

Antwort von AI

Daten können mit Intent übertragen werden:

  1. In der Quell-Activity: Platzieren Sie die Daten in den Extras des Intent mit Methoden wie putExtra(String key, value).

    // Intent vorbereiten
    val intent = Intent(this, TargetActivity::class.java)
    // Daten hinzufügen
    intent.putExtra("myString", "Hallo aus der ersten Activity")
    intent.putExtra("myInt", 123)
    intent.putExtra("myBool", true)
    // Objekte, die Parcelable oder Serializable implementieren, können ebenfalls übertragen werden
    // intent.putExtra("myObject", myParcelableObject)
    
    // Neue Activity starten
    startActivity(intent)
    
  2. In der Ziel-Activity: Extrahieren Sie die Daten aus den Extras des Intent, der in onCreate oder onNewIntent empfangen wurde.

    // In onCreate() der Ziel-Activity
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_target)
    
        // Erhalten des Intents, der diese Activity gestartet hat
        val intent = intent
    
        // Daten anhand des Schlüssels extrahieren
        val myString = intent.getStringExtra("myString")
        val myInt = intent.getIntExtra("myInt", 0) // Zweites Argument: Standardwert
        val myBool = intent.getBooleanExtra("myBool", false)
    
        // Verarbeiten der extrahierten Daten
        println("Empfangene Zeichenkette: $myString")
        println("Empfangene Zahl: $myInt")
        println("Empfangenes Boolean: $myBool")
    
        // Für Parcelable- oder Serializable-Objekte
        // val myObject = intent.getParcelableExtra<MyParcelableClass>("myObject")
    }
    

Weitere Methoden zum Übertragen von Daten, geeignet für komplexere Szenarien oder große Datenmengen:

  • ViewModel gemeinsam genutzt zwischen Fragmenten/Activities (über SharedViewModel): Praktisch für gemeinsame Daten zwischen verbundenen Komponenten.
  • Bundle (innerhalb der Extras des Intents): putExtra verwendet intern ein Bundle.
  • Statische Variablen/Singletons: Sollten vorsichtig verwendet werden, da sie zu Speicherlecks und Zustandsproblemen führen können.
  • Datenbank/SharedPreferences: Für dauerhafte Speicherung oder Übertragung von Daten, die gespeichert werden müssen.
  • Event Bus (z.B. EventBus, RxJava): Für die asynchrone Übertragung von Ereignissen oder Daten zwischen Komponenten.
  • File I/O: Speichern in eine Datei und Lesen daraus.