J'ai plusieurs SharedPreferences
qui stockent chacun une valeur int
chacun. J'ai déjà créé plusieurs fois SharedPreferences
, mais j'essaie une approche légèrement différente pour celle-ci. Je ne garde que les 5 valeurs les plus élevées. Je reçois chaque valeur de SharedPreference
, puis j'ajoute les 5 valeurs + la valeur actuelle que je veux comparer aux autres dans un ArrayList
. J'appelle la méthode de tri inverse, puis je supprime la dernière valeur (parce qu'elle est extra). Je mets alors chaque index dans l'éditeur du SharedPreferences
. Voici ce que j'ai:Android: SharedPreferences Problème (Multiple SharedPreferences)
prefs1 = this.getSharedPreferences("key1", Context.MODE_PRIVATE);
int value1 = prefs1.getInt("number1", 0);
prefs2 = this.getSharedPreferences("key2", Context.MODE_PRIVATE);
int value2 = prefs2.getInt("number2", 0);
prefs3 = this.getSharedPreferences("key3", Context.MODE_PRIVATE);
int value3 = prefs3.getInt("number3", 0);
prefs4 = this.getSharedPreferences("key4", Context.MODE_PRIVATE);
int value4 = prefs4.getInt("number4", 0);
prefs5 = this.getSharedPreferences("key5", Context.MODE_PRIVATE);
int value5 = prefs5.getInt("number5", 0);
ArrayList<Integer> numList = new ArrayList<Integer>();
Collections.addAll(numList, value0, value1, value2, value3, value4, value5);
Collections.sort(numList, Collections.reverseOrder());
numList.remove(numList.size()-1);
value1 = numList.get(0);
value2 = numList.get(1);
value3 = numList.get(2);
value4 = numList.get(3);
value5 = numList.get(4);
Editor editor = prefs1.edit();
editor.putInt("number1", value1);
editor.commit();
editor = prefs2.edit();
editor.putInt("number2", value2);
editor.commit();
editor = prefs3.edit();
editor.putInt("number3", value3);
editor.commit();
editor = prefs4.edit();
editor.putInt("number4", value4);
editor.commit();
editor = prefs5.edit();
editor.putInt("number5", value5);
editor.commit();
Le problème que j'ai est qui montre 0s pour chacune des valeurs dans mon autre activité, même après value0
est positif après exécuté par.
Y a-t-il quelque chose qui ne va pas dans ce que je fais? (Dans le cas contraire il doit être quand je reçois ces valeurs dans une autre activité, mais je suis j'ai presque certain que le droit.)
EDIT *
Peut-être qu'il est dans la récupération, voici de l'activité de récupération :
prefs1 = this.getSharedPreferences("key1", Context.MODE_PRIVATE);
num1 = prefs1.getInt("number1", 0); //0 is the default value
tv1 = (TextView) findViewById(R.id.val1);
tv1.setText(String.valueOf(num1));
prefs2 = this.getSharedPreferences("key2", Context.MODE_PRIVATE);
num2 = prefs2.getInt("number2", 0); //0 is the default value
tv2 = (TextView) findViewById(R.id.val2);
tv2.setText(String.valueOf(num2));
prefs3 = this.getSharedPreferences("key3", Context.MODE_PRIVATE);
num3 = prefs3.getInt("number3", 0); //0 is the default value
tv3 = (TextView) findViewById(R.id.val3);
tv3.setText(String.valueOf(num3));
prefs4 = this.getSharedPreferences("key4", Context.MODE_PRIVATE);
num4 = prefs4.getInt("number4", 0); //0 is the default value
tv4 = (TextView) findViewById(R.id.val4);
tv4.setText(String.valueOf(num4));
prefs5 = this.getSharedPreferences("key5", Context.MODE_PRIVATE);
num5 = prefs5.getInt("number5", 0); //0 is the default value
tv5 = (TextView) findViewById(R.id.val5);
tv5.setText(String.valueOf(num5));
Ne pas critiquer, juste curieux. –
@DanielSmith Je ne conserve que 5 valeurs, il est donc plus facile de le faire que de créer une base de données pour seulement 5 valeurs. –
Ou ayez une préférence partagée et conservez 5 valeurs. – wtsang02