Bonjour,
comme dit dans le titre j'ai un souci de Bundle et des questions sur TextView.
1) Comment on sauvegarde un POJO serializé qui est affiché dans un TextView (Pour l'afficher je le transforme en String, mais ça va pas mieux)?
Actuellement ça ne marche pas, il refuse de me garder le TextView avec ce qu'il a récupéré de l'autre Activity.
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96 public class MainActivity extends AppCompatActivity { //Déclaration des attributs des vues private TextView tvTodos; //bundle serializé Serializable desTodos; String unTodo; //clé private static final String KEY_INDEX = "index"; public static final String KEY_TODO = "todos"; //////////////////////////////////////ZONE ONCREATE///////// @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //Récupérer les éléments de la vue tvTodos = findViewById(R.id.tvTodos); //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! LE BUNDLE NE FONCTIONNE PAS //On teste si le bundle est utilisé (pour le sauvegarder au besoin) if (savedInstanceState != null){ //index = savedInstanceState.getInt(KEY_INDEX); //desTodos = savedInstanceState.getSerializable(KEY_TODO); unTodo = savedInstanceState.getString(KEY_TODO); } } ////////////////////////////////////////////////////////// ///////////////////////////////////ZONE BUNDLE//////////// //Sauvegarde les Todos en cas de changement d'état @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); //Informations envoyées au bundle pour sauvegarder //outState.putInt(KEY_INDEX, index); //outState.putSerializable(KEY_TODO, desTodos); outState.putString(KEY_TODO, unTodo); } ////////////////////////////////////////////////////////// SUITE DE L'APPLI et ///////////////////////////////////////ZONE DE RETOUR ET D'AFFICHAGE //On test le retour de l'activité AddToDoActivity @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); //On vérifie le numéro de l'activity et le résultCode if ((requestCode == 1)&&(resultCode == RESULT_OK)){ //On récupère la variable name envoyée par AddTodoActivity String name = String.valueOf(data.getSerializableExtra("name")); //On récupère la variable urgency envoyée par AddTodoActivity String urgency = String.valueOf(data.getSerializableExtra("urgency")); //On formate l'affichage String unTodo = name + " / " + urgency; //On affiche dans le TextView tvTodos.setText(unTodo); }else { //On affiche rien de plus } } /////////////////////////////////////////////////////////// }
Je ne pense pas qu'il me manque grand chose. Mais J'arrive pas à faire fonctionner le bundle (lorsque je change de sens de vue du téléphone virtuel, il perd tout).
J'ai donc un petit souci de compréhension parce que pour moi, j'ai tout ... o_O
Si quelqu'un peut m'expliquer ... Merci d'avance
===========================================================================
2) Est-il possible de récupérer les données d'une autre activité et d'ajouter la donnée à un TextView qui en contient déjà ?
Récupérer les données, ça marche, mais ma nouvelle donnée écrase systématiquement la précédente.
Peut-on créer des TextView à la volé ?
Ou s'agit-il d'ajouter des lignes dans le TextView ?
J'ai du mal à comprendre le mécanisme du TextView. Intuitivement je mettrais bien une ListeView, mais il semblerait que c'est possible avec un TextView.
Voilà ce que j'ai actuellement, mais je comprends pas trop comment je dois procéder pour compléter l'affichage, avec les nouvelles données.
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 ///////////////////////////////////////ZONE DE RETOUR ET D'AFFICHAGE //On test le retour de l'activité AddToDoActivity @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); //On vérifie le numéro de l'activity et le résultCode if ((requestCode == 1)&&(resultCode == RESULT_OK)){ //On récupère la variable name envoyée par AddTodoActivity String name = String.valueOf(data.getSerializableExtra("name")); //On récupère la variable urgency envoyée par AddTodoActivity String urgency = String.valueOf(data.getSerializableExtra("urgency")); //On formate l'affichage String unTodo = name + " / " + urgency; //On affiche dans le TextView tvTodos.setText(unTodo); }else { //On affiche rien de plus } } ///////////////////////////////////////////////////////////
Partager