Bonjour à tous,
Je suis nouveau dans le développement Android et je dois coder une petite application pour ma formation sauf que je bute un peu sur la sauvegarde des données mais aussi de changements qui doivent intervenir au cours du jeu. Je vous explique :
J'ai une activité 1 appelée DebloqueActivity.java avec 8 Buttons et 8 TextViews, ils sont tous visibles au début du jeu. Lorsqu'un utilisateur clique sur un bouton alors il devient invisible (l'utilisateur ne le voit plus après le clic ni le textview associé au bouton (le bouton est une image en background)). Je n'ai pas de problème avec ça, j'ai utilisé les SharedPreferences pour enregistrer les changements. Le problème c'est que cette activité me permet de débloquer un nouveau personnage qui doit apparaître dans l'activité 2 PersoActivity.java où les boutons sont tout d'abord invisibles (sauf 2) puis deviennent visibles lorsque un nouveau personnage est débloqué dans l'activité 1. Sauf que je rencontre un problème pour sauvegarder les changements de invisible à visible définitivement. J'ai aussi utilisé les SharedPreferences mais ça ne fonctionne pas pour cette activité 2. En fait quand je débloque un personnage en cliquant sur un bouton dans l'activité 1, ce même bouton devient invisible dans l'activité 1 et en même temps ce bouton ou personnage devient visible dans l'activité 2 (il y a un bouton combattant (J1) et adversaire pour le joueur 2), ça marche mais si je quitte l'application et que je la réouvre ensuite hé bien le bouton est bien invisible dans l'activité 1 mais il redevient invisible dans l'activité 2 or j'aimerais qu'il reste visible. Si quelqu'un saurait comment je peux faire ça ?
Je poste un court exemple de code avec juste un bouton dans les 2 activités.
Activité 1 (tout marche correctement) :
Activité 2 (les SharedPreferences ne marche pas cette fois, il n'y a pas de sauvegarde du bouton visible) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
28
29
30 public class DebloqueActivity extends Activity { Button totoB; TextView totoTv; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_debloque); final SharedPreferences prefs = getSharedPreferences("sharedPreferences", Context.MODE_PRIVATE); totoB = (Button) findViewById(R.id.perso1); totoTv = (TextView) findViewById(R.id.perso1Text); totoB.setVisibility(prefs.getBoolean("isTotoBVisible", true) ? View.VISIBLE : View.INVISIBLE); totoTv.setVisibility(prefs.getBoolean("isTotoTVVisible", true) ? View.VISIBLE : View.INVISIBLE); totoB.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { prefs.edit().putBoolean("isTotoBVisible", false).apply(); prefs.edit().putBoolean("isTotoTVVisible", false).apply(); totoB.setVisibility(View.INVISIBLE); totoTv.setVisibility(View.INVISIBLE); Intent intentToto = new Intent(DebloqueActivity.this, JouerActivity.class); startActivity(intentToto); } }); }
Comment faire pour enregistrer les changements dans ma 2ème activités, je veux que les boutons et les textviews s'y affichent lorsque le bouton qui lui correspond dans l'activité 1 a été cliqué.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
28
29
30
31
32
33
34
35
36
37
38 public class PersoActivity extends Activity { public static Personnage p1, p2; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_perso); final SharedPreferences prefs = getSharedPreferences("sharedPreferences", Context.MODE_PRIVATE); final Button totoPersoBtn = (Button) findViewById(R.id.perso1); // Le même bouton pour le choix du combattant final TextView totoPersoTv = (TextView) findViewById(R.id.perso1Text); totoAdversaireBtn = (Button) findViewById(R.id.adversaire1); // Le même bouton si vous le choisissez en adversaire totoAdversaireTv = (TextView) findViewById(R.id.adversaire1Text); totoPersoBtn.setVisibility(prefs.getBoolean("isTotoPersoBtnInvisible", true) ? View.INVISIBLE : View.VISIBLE); totoPersoTv.setVisibility(prefs.getBoolean("isTotoPersoTvInvisible", true) ? View.INVISIBLE : View.VISIBLE); totoAdversaireBtn.setVisibility(prefs.getBoolean("isTotoAdversaireBtnInvisible", true) ? View.INVISIBLE : View.VISIBLE); totoAdversaireTv.setVisibility(prefs.getBoolean("isTotoAdversaireTvInvisible", true) ? View.INVISIBLE : View.VISIBLE); if(DebloqueActivity.isClicked) { prefs.edit().putBoolean("isTotoPersoBtnInvisible", false).apply(); prefs.edit().putBoolean("isTotoPersoTvInvisible", false).apply(); prefs.edit().putBoolean("isTotoAdversaireBtnInvisible", false).apply(); prefs.edit().putBoolean("isTotoAdversaireTvInvisible", false).apply(); totoPersoTv.setVisibility(View.VISIBLE); totoPersoBtn.setVisibility(View.VISIBLE); totoAdversaireBtn.setVisibility(View.VISIBLE); totoAdversaireTv.setVisibility(View.VISIBLE); } else { totoPersoBtn.setVisibility(View.INVISIBLE); totoPersoTv.setVisibility(View.INVISIBLE); totoAdversaireBtn.setVisibility(View.INVISIBLE); totoAdversaireTv.setVisibility(View.INVISIBLE); } } }
Merci à ceux qui pourront m'aider.
Pikkoro
Partager