Можно ли сохранить пустоту в SharedPreferences - PullRequest
0 голосов
/ 27 декабря 2018

У меня есть кнопка, которая меняет цвет MainActivity, но она работает только в том случае, если приложение открыто, если я выхожу из приложения и снова открываю, оно возвращается к обычному цвету, который является белым.Как хранить с Shared Preferences, у вас есть идея, как это сделать, потому что я могу сохранить строки, int и boolean, но об этой функции у меня нет никаких идей.

Это мой код.

MainActivity.class

public static final String Change_Color = "Change_Color";
private boolean switchOnOff;


  setContentView(R.layout.activity_main);

   if (switchOnOff == true) {
        setColorGreyImageButton();
        } else if(switchOnOff == false) {
            setColorWhiteImageButton();
        }


if(id == R.id.menu_back_white) {
   saveColor();
} else if (id == R.id.menu_back_black) {
   saveColor2();
}

 public void setColorGreyImageButton() {
        settings.setColorFilter(Color.parseColor("#757575"));
        voiceSearch.setColorFilter(Color.parseColor("#757575"));
        share.setColorFilter(Color.parseColor("#757575"));
        search.setColorFilter(Color.parseColor("#757575"));
        mainView.setBackgroundColor(Color.parseColor("#FFFFFF"));

SharedPreferences в MainActivity

public void saveColor() {
    SharedPreferences sharedPreferences = getSharedPreferences("Color", MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.putBoolean(Change_Color, false);
    switchOnOff = sharedPreferences.getBoolean(Change_Color, false);

}

public void saveColor2() {
    SharedPreferences sharedPreferences = getSharedPreferences("Color", MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.putBoolean(Change_Color, true);
    switchOnOff = sharedPreferences.getBoolean(Change_Color, true);
}

1 Ответ

0 голосов
/ 27 декабря 2018

Используйте эти методы в своем классе активности:

private boolean getChangeColor() {
    SharedPreferences sharedPreferences = getSharedPreferences("Color", MODE_PRIVATE);
    return sharedPreferences.getBoolean(getPackageName() + ".change_color", false);
}

private void saveChangeColor(boolean changeColor) {
    SharedPreferences sharedPreferences = getSharedPreferences("Color", MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.putBoolean(getPackageName() + ".change_color", changeColor);
    editor.apply();
}

В onCreate() проверьте значение boolean, хранящееся в SharedPreferences:

   switchOnOff = getChangeColor();
   if (switchOnOff) {
       setColorGreyImageButton();
   } else {
       setColorWhiteImageButton();
   }

и когда вы хотитеизменить значение в SharedPreferences вызов:

saveChangeColor(true); 

или

saveChangeColor(false);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...