Bonjour à tous !
Alors j'ai une question pour le développement Android. Quand on fait la rotation écran, la vue meurt et renaît. Je sais utiliser les savedInstantState() sans soucis,
mais là j'ai un problème : je veux conserver des vues que j'ai créer au cours de l'activité.
Imaginez, vous appuyez sur un bouton, des checkbox apparaissent en dessous. Très bien. Sauf que la rotation écran va les enlever.
Alors pourquoi pas les mettre dans un ArrayList serializable, pour pouvroir les sauvegarder ? ça marche pas quand on veut de nouveau les réafficher comme ici :
.
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
43
44
45
46
47
48 public class MainActivity extends Activity implements java.io.Serializable { private Button b; private ArrayList<Button> bouttons; private TableLayout lay; private int i; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); lay = (TableLayout) findViewById(R.id.table); i = bouttons.size(); b = (Button) findViewById(R.id.Bouton); if(savedInstanceState != null) { bouttons = (ArrayList<Button>) savedInstanceState.getSerializable("mySerialization"); for (int b = 0; b<bouttons.size(); b++) { lay.addView(bouttons.get(b)) } } else { bouttons = new ArrayList<Button>(); } b.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { bouttons.add(new Button(scroll.apk.MainActivity.this)); bouttons.get(i).setText(""+i); lay.addView(bouttons.get(i)); i++; } }); } @Override public void onSaveInstanceState(Bundle savedInstanceState) { super.onSaveInstanceState(savedInstanceState); savedInstanceState.putSerializable("mySerialization", bouttons); } @Override public void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); } }
Ce petit code ajoute un bouton à chaque fois qu'on clique sur "b". Et après rotation, il n'est pas censé changer grâce à l'arrayList de boutons et le réaffichage des objets via la boucle. Mais l'application plante. Et je sais pas pourquoi.
Ce qui est le plus frustrant c'est que si j'ajoute un nouvel objet (nouvel instance) ça marche, alors pourquoi un objet dans un arrayList il refuse...
Le cast est corrompu, ou alors ils ont eu des paramètres dans l'activitée précédente qui ne les permet pas de se réafficher dans un layout parent je suppose.
Je me demande donc comment les applications qui ont des interfaces dynamiques au niveau des widget font pour garder le même aspect après la fin d'un cycle d'activité ???
Merci d'avance !!!!!
Partager