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
        }
 
 
    }
    ///////////////////////////////////////////////////////////