bonjour,
j'ai besoin de mémoriser le résultat d'un calcul afficher dans un TextView pour l'utiliser dans d'autres activités. Dans un premier temps j'utilise une SharedPreferences dans un petit test pour comprendre comment cela fonctionne.
Le bouton store me permet de lire et stocker le contenu du TextView. Le bouton clear efface le TextView et le bouton restore relit la sharedPreferences et l'affiche dans la TextView.
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 public class MainActivity extends AppCompatActivity implements View.OnClickListener { private Button btn_store = null; private Button btn_restore = null; private Button btn_clear = null; private EditText txt_data = null; private static String DATA = "0"; //avec null ou "" c'est idem private SharedPreferences preference = null; SharedPreferences.Editor editor = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); txt_data = (EditText)findViewById(R.id.editText_data); btn_store = (Button)findViewById(R.id.button_store); btn_clear = (Button)findViewById(R.id.button_clear); btn_restore = (Button)findViewById(R.id.button_restore); btn_store.setOnClickListener(this); btn_restore.setOnClickListener(this); btn_clear.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.button_store: String val = txt_data.getText().toString(); preference = PreferenceManager.getDefaultSharedPreferences(this); editor = preference.edit(); editor.putString(DATA, val); editor.commit(); break; case R.id.button_restore: preference = PreferenceManager.getDefaultSharedPreferences(this); SharedPreferences.Editor editor1 = preference.edit(); String data = preference.getString(DATA, "Vide"); editor1.commit(); txt_data.setText(data); break; case R.id.button_clear: txt_data.setText(""); break; } } }
Ce scénario fonctionne correctement sauf si j'utilise le bouton restore en premier ce qui provoque l'erreur:
getSharedPreferences
org.xmlpull.v1.XmlPullParserException: Map value without name attribute: string
Il y a des pistes sur le net mais aucune n'a résolu mon pb. Y a-t-il une solution ou ce que j'écris n'a-t-il pas de sens ou est-ce mal écrit ou bien ...
Merci
Partager