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:
-
In de bron-Activity: Plaats de gegevens in de Extras van de
Intentmet methoden zoalsputExtra(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) -
In de doel-Activity: Haal de gegevens uit de Extras van de
Intentdie is ontvangen inonCreateofonNewIntent.// 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:
ViewModelgedeeld tussen Fragments/Activities (via SharedViewModel): Handig voor gedeelde gegevens tussen gerelateerde componenten.Bundle(binnen Extras van de Intent):putExtragebruikt in feite een interneBundle.- 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.