Partager données entre activités
Bonjour à tous,
J'essaie actuellement de me familiariser avec le développement pour Android. Et je rencontre certaines difficultés quant au partage de données entre plusieurs activités.
Voici mon problème (simplifié quitte à le rendre un peu bête):
-J'ai 3 activités. La 1ère (la MainActivity permet à l'utilisateur de rentrer des données), la deuxième permet à l'utilisateur de les trier et la 3 ème affiche les résultats.
J'aimerai créer une liste d'éléments dans la première activité à laquelle les 2 autres auraient accès.
Je sais qu'il est possible de transférer des données au moment de la création des intents mais il me semble que cette solution est peu appropriée dans mon cas. Je pensais donc définir des variables globales mais j'ignore comment m'y prendre. (Je n'arrive pas a y accéder a partir d'une autre activité et je sais surtout que c'est généralement une solution à éviter :p )
J'imagine qu'il doit exister une solution plus élégante donc je m'en remets à vous :)
J'ai bien conscience qu'il s'agit d'un problème de débutant donc sans doute déjà abordé sur le forum mais difficile de trouver quand on ne sait pas ce qu'on cherche.
(Je débute donc je dois sans doute confondre tout un tas de termes donc n'hésitez pas si vous voulez que je précise certaines de mes pensées)
Données commune entre activités
Salut, je ne sais pas si c'est la meilleur méthode, mais si tes données ne sont pas trop volumineuses tu peux créer une classe Application.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
public class MyApplication extends Application {
private static Context mContext; //pour le context
private static int records[]; //des données... ici un tableau d'entiers
private static boolean soundOn = true;
public void onCreate(){
super.onCreate();
this.mContext = this;
}
//des fonctions get/set pour accéder à tes données depuis les autres activitées
public static int getRecords(int gameNumber) {
return records[gameNumber];
}
public static int setRecords(int gameNumber, int record) {
this.records[gameNumber] = record;
}
public static Context getContext(){
return mContext;
}
} //fin class MyApplication |
Ensuite, tu accède aux données depuis les autres activités de façon statique:
Code:
1 2
|
int record = MyApplcation.getRecords(1); //record pour jeu n°1 |