Я изучаю Android и для этого проекта мне нужно сохранить данные пользователя - изменение цвета кнопок, в данном случае -. Во время программы происходит изменение (onClick), но когда я перезапускаю приложение, ничего не происходит - изменение не было сохранено (или читать ...) Может ли кто-нибудь мне помочь? Код:Android: проблема с хранением данных (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: метод OnClick:
общественного недействительными OnClick (View v) {
if(v==color){
changeColor();
}
EDIT: это, как я есть сейчас:
public void preferences(){
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
data = settings.getString("stage", "Indoors");
final String paintKey = "paint";
settings.getBoolean(paintKey,false);
Неверно? если я ставлю редактор вместо параметров я получаю красный подчеркнутый
Я не вижу фрагмент кода, который читается из клавиши «paint»: 'settings.getBoolean (« paint », false)'. Вы должны прочитать тот самый ключ, на который вы спасли. В идеале создайте 'final String paintKey =" paint "' variable. – foxanna
Я добавил строку, но она не сработала ... также окончательная строка – glassraven
Пожалуйста, обновите вопрос и фактическое поведение соответственно – foxanna