Bonjour a tous,
J'ai un soucis concernant la sauvegarde des données après la rotation de l'écran.
J'ai deux activités :
- Additionneur (activity appelante)
- NumeroterEtCetera (activity appelée)
Voici l'activity Additionneur :
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
39
40
41
42 public class AdditionneurActivity extends Activity { private static final int REQUEST_CODE = 999; private int val; private TextView resultat; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_additionneur); if(savedInstanceState != null){ resultat.setText(savedInstanceState.getString("res").toString()); }else { resultat = (TextView) findViewById(R.id.resultat); } } public void onClickAjouterNombre(View view){ Intent intent = new Intent("df.exo3.NUMEROTATION"); startActivityForResult(intent, REQUEST_CODE); } public void onClickReset(View view){ resultat.setText("0"); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if(resultCode == RESULT_OK && requestCode == REQUEST_CODE && data.hasExtra("chiffres")) { Bundle extras = data.getExtras(); String val = extras.getString("chiffres"); int somme = Integer.parseInt(val)+Integer.parseInt(resultat.getText().toString()); resultat.setText(somme + ""); } } protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putString("res", resultat.getText() + ""); } }
Et l'activity NumeroterEtCetera :
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
39
40 public class NumeroterActivity extends Activity { private String saisie = ""; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_numeroter); if(savedInstanceState != null){ saisie = savedInstanceState.getString("saisie"); } } public void newChiffre(View v) { Button bouton = (Button) v; saisie += bouton.getText(); } public void toucheDel(View v) { if (saisie.length() > 0) saisie = saisie.substring(0, saisie.length()-1); } public void toucheReset(View v) { saisie = ""; } public void toucheOk(View v) { Intent intentionResult = new Intent(); intentionResult.putExtra("chiffres", saisie); setResult(RESULT_OK, intentionResult); this.finish(); } protected void onSaveInstanceState(Bundle outState){ super.onSaveInstanceState(outState); outState.putString("saisie",saisie); } }
Le but est d'appeler l'activité NumeroterEtCetera (à partir de l'activité Additionneur), de composer un numéro et de renvoyer ce numéro à l'activité Additionneur qui va afficher à chaque fois la somme des numéros saisies.
Mon problème est que lorsque dans l'activité NumeroterEtCetera:
- je compose un numéro
- puis je fais une rotation juste après
- enfin je valide le numéro saisie mais l'application plante !
Si je ne fais pas de rotation entre la composition du numéro et la validation du numéro saisie, le programme ne plante pas.
Quelqu'un a une solution à me proposer ?
Merci d'avance
Mohaskh
Partager