Junior
Comment transmettre des données d'une activité à une autre dans Android?
sobes.tech IA
Réponse de l'IA
Les données peuvent être transmises en utilisant Intent:
-
Dans l'Activity d'origine : Placez les données dans les Extras de l'
Intenten utilisant des méthodes commeputExtra(String key, value).// Préparer l'Intent val intent = Intent(this, TargetActivity::class.java) // Ajouter des données intent.putExtra("myString", "Bonjour depuis la première Activity") intent.putExtra("myInt", 123) intent.putExtra("myBool", true) // On peut transmettre des objets qui implémentent Parcelable ou Serializable // intent.putExtra("myObject", myParcelableObject) // Démarrer la nouvelle Activity startActivity(intent) -
Dans l'Activity cible : Extraire les données des Extras de l'
Intentreçu dans la méthodeonCreateouonNewIntent.// Dans onCreate() de l'Activity cible override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_target) // Obtenir l'Intent qui a lancé cette Activity val intent = intent // Extraire les données par clé val myString = intent.getStringExtra("myString") val myInt = intent.getIntExtra("myInt", 0) // Deuxième argument : valeur par défaut val myBool = intent.getBooleanExtra("myBool", false) // Traiter les données extraites println("Chaîne reçue : $myString") println("Nombre reçu : $myInt") println("Boolean reçu : $myBool") // Pour des objets Parcelable ou Serializable // val myObject = intent.getParcelableExtra<MyParcelableClass>("myObject") }
Autres méthodes de transmission de données, adaptées à des scénarios plus complexes ou à de gros volumes de données :
ViewModelpartagé entre Fragments/Activities (via SharedViewModel): Pratique pour des données communes entre composants liés.Bundle(dans les Extras de l'Intent):putExtrautilise en réalité unBundleinterne.- Variables statiques/singletons: À utiliser avec précaution, car elles peuvent entraîner des fuites de mémoire et des problèmes d'état.
- Base de données/SharedPreferences: Pour un stockage ou une transmission persistante de données nécessitant une sauvegarde.
- Event Bus (par exemple, EventBus, RxJava): Pour transmettre des événements ou des données entre composants de manière asynchrone.
- File I/O: Enregistrement dans un fichier et lecture depuis celui-ci.