[Android] Bundle et TextView
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:
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:
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
}
}
/////////////////////////////////////////////////////////// |