Sobes.tech
Junior

Hoe gegevens van de ene activiteit naar de andere in Android overbrengen?

sobes.tech AI

Antwoord van AI

Gegevens kunnen worden overgedragen met behulp van Intent:

  1. In de bron-Activity: Plaats de gegevens in de Extras van de Intent met methoden zoals putExtra(String key, value).

    // Intent voorbereiden
    val intent = Intent(this, TargetActivity::class.java)
    // Gegevens toevoegen
    intent.putExtra("myString", "Hallo vanaf de eerste Activity")
    intent.putExtra("myInt", 123)
    intent.putExtra("myBool", true)
    // Objecten die Parcelable of Serializable implementeren, kunnen ook worden doorgegeven
    // intent.putExtra("myObject", myParcelableObject)
    
    // Nieuwe Activity starten
    startActivity(intent)
    
  2. In de doel-Activity: Haal de gegevens uit de Extras van de Intent die is ontvangen in onCreate of onNewIntent.

    // In onCreate() van de doel-Activity
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_target)
    
        // Verkrijg de Intent die deze Activity heeft gestart
        val intent = intent
    
        // Gegevens ophalen op basis van de sleutel
        val myString = intent.getStringExtra("myString")
        val myInt = intent.getIntExtra("myInt", 0) // Tweede argument is de standaardwaarde
        val myBool = intent.getBooleanExtra("myBool", false)
    
        // Verwerk de opgehaalde gegevens
        println("Ontvangen string: $myString")
        println("Ontvangen nummer: $myInt")
        println("Ontvangen boolean: $myBool")
    
        // Voor Parcelable of Serializable objecten
        // val myObject = intent.getParcelableExtra<MyParcelableClass>("myObject")
    }
    

Andere methoden voor gegevensoverdracht, geschikt voor complexere scenario's of grote hoeveelheden gegevens:

  • ViewModel gedeeld tussen Fragments/Activities (via SharedViewModel): Handig voor gedeelde gegevens tussen gerelateerde componenten.
  • Bundle (binnen Extras van de Intent): putExtra gebruikt in feite een interne Bundle.
  • Statische variabelen/singletons: Moeten voorzichtig worden gebruikt, kunnen geheugenlekken en problemen met de toestand veroorzaken.
  • Database/SharedPreferences: Voor permanente opslag of overdracht van gegevens die moeten worden bewaard.
  • Event Bus (bijvoorbeeld EventBus, RxJava): Voor het asynchroon overdragen van gebeurtenissen of gegevens tussen componenten.
  • File I/O: Opslaan in een bestand en lezen ervan.