J'apprends Android et pour ce projet, j'ai besoin de sauvegarder les données de l'utilisateur - changement de couleur des boutons, dans ce cas -. Au cours du programme, le changement se produit (onClick), mais quand je redémarre l'application, rien ne se passe - le changement n'a pas été enregistré (ou lu ...) Quelqu'un peut-il m'aider? Code:Android: problème de stockage de données (SharedPreferences)
final String paintKey = "paint";
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
buttonCreate();
preferences();
togglePlay();
}
public void preferences(){ //the issue in this method?
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
data = settings.getString("stage", "Indoors");
settings.getBoolean(paintKey,false);
String backGround = settings.getString("stage", "Indoors");
if (backGround.equals("Indoors")) {
Picasso.with(this).load(R.drawable.shocked_crowd).fit().centerCrop().into(stage);
}
if (backGround.equals("Street")) {
Picasso.with(this).load(R.drawable.coins).fit().centerCrop().into(stage);
}
}
public void changeColor(){
if(!paint) { //paint variable has global scope and it is set to false
c1.setBackgroundColor(Color.YELLOW);
paint = true;
}else{
c1.setBackgroundColor(Color.BLUE);
paint = false;
}
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("paint", paint);
editor.commit();
}
EDIT: la méthode onClick:
onClick public void (Voir v) {
if(v==color){
changeColor();
}
EDIT: Voici comment je l'ai maintenant:
public void preferences(){
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
data = settings.getString("stage", "Indoors");
final String paintKey = "paint";
settings.getBoolean(paintKey,false);
Mauvais? si je mets éditeur au lieu de paramètres que je reçois rouge souligné
Je ne vois pas un morceau de code lu par la touche "paint": 'settings.getBoolean (" paint ", false)'. Vous devriez lire la même clé que vous étiez en train d'enregistrer. Idéalement, faites une variable 'final paintKey =" paint "'. – foxanna
J'ai ajouté la ligne, mais il n'a pas travaillé ... aussi la dernière chaîne – glassraven
S'il vous plaît mettre à jour la question et le comportement réel en conséquence – foxanna