Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Android] Garder ses variables d'une activité à l'autre

Android

Sujet résolu
10 janvier 2012 à 11:39:33

Bonjour,
Voila mon soucis.

Je fais un jeu sous Android.
J'ai une activité Main, qui est ma map sur laquelle se trouve des unités.
Lorsque je clic sur une base, je voudrais lancer une activité ChoixUnite.
Et puis après le choix d'une unité, revenir sur mon activité Main.
Mais pour se faire, j'aimerais pouvoir garder l'activité Main et toutes ses variables (il y en a beaucoup) pendant que je suis sur l'activité ChoixUnite.

Sur ce que j'ai pu trouver, le staractivity me fait changer d'activité et le startactivityforresult mais fais juste envoyer des variables mais ne conserve pas en l'état mon Main.

Comment pourrais je procéder ?
Merci.
  • Partager sur Facebook
  • Partager sur Twitter
10 janvier 2012 à 12:48:03

Bonjour,

Plusieurs façons:
  • Très sale (à éviter donc): variables static
  • Sauvegarder tes variables dans une base de données ou dans les préférences
  • Passer tes variables dans l'Intent qui lance ChoixUnite
  • Partager sur Facebook
  • Partager sur Twitter
10 janvier 2012 à 12:49:41

Merci,
Je vais éviter les variables static, c'est vrai que ça fait moche ^^
Je vais voir du côté des "préférences" peut être ou de la bdd
Parce que passer mes variables dans l'intent, étant donné que j'en ai vraiment beaucoup je sais pas comment je peux faire.
  • Partager sur Facebook
  • Partager sur Twitter
10 janvier 2012 à 19:58:52

C'est vrai que s'il y en a énormément, le stockage en préférences ou en BdD est la meilleure solution.

Le passage par l'Intent, en plus du fait qu'il faille vérifier la rapidité de la chose, est assez fastidieux dès qu'on dépasse deux-trois variables de type primitif. Dans le cas d'objets complexes, il faut en plus utiliser les Bundle.

Dans ton cas, c'est donc BdD ou "prefs" for the win !
  • Partager sur Facebook
  • Partager sur Twitter
11 janvier 2012 à 13:44:20

D'accord, je vais m'orienter sur la bdd alors, ça sera surement plus simple.
Mais donc toutes mes variables de jeux seront en bdd et non plus en variables, c'est dommage de stocker autant de choses qui ne sont que des variables ^^.
Merci.
  • Partager sur Facebook
  • Partager sur Twitter
11 janvier 2012 à 15:02:46

Ce sera toujours des variables dans ton programme: la BdD n'est qu'un moyen de les faire passer dans tes activités.
Si c'est juste des variables de types primitifs (int, double, string), reste sur les préférences, tu t'épargneras beaucoup de peine.
Mais quand tu dis que tu as beaucoup de variables, c'est combien?
  • Partager sur Facebook
  • Partager sur Twitter
11 janvier 2012 à 15:04:17

C'est toutes les variables d'un jeux vidéos.
Toutes les Cases, Unités, Base, Terrain, etc. que j'ai créé plus leur position, visibilité, etc.
Donc plusieurs dizaines voir plus encore.
  • Partager sur Facebook
  • Partager sur Twitter
15 janvier 2012 à 12:52:29

Je viens de trouver quelques choses.
J'ai vu sur un exemple de code qui parlait d'autres choses, que la personne utilisais une méthode : finish() dans sa 2ème activité pour revenir à la première.
Est il possible avec cette méthode finish de faire passer des paramètres ?
  • Partager sur Facebook
  • Partager sur Twitter
15 janvier 2012 à 17:27:58

Si tu as fait un startActivityForResult(), il suffit de mettre tes paramètres dans l'Intent de ta deuxième Activity, puis de récupérer le tout dans le onActivityResult() de ta deuxième première Activity.

Mais cela revient à faire le passage par Intent évoqué dans les messages précedents dans les deux sens.
  • Partager sur Facebook
  • Partager sur Twitter
15 janvier 2012 à 17:28:44

J'ai trouvé ça sur le net ! C'est ce que je viens de faire, c'est ce qu'il me fallait au final !

Merci.
  • Partager sur Facebook
  • Partager sur Twitter