是否可以节省SharedPreferences中的空白

时间:2018-12-26 22:43:59

标签: android sharedpreferences

我有一个按钮,它可以更改MainActivity的颜色,但是只有当我退出该应用程序并再次打开该应用程序时,该按钮才起作用,它会恢复为正常的白色。 如何使用“共享首选项”进行存储,您是否知道该怎么做,因为我可以保存字符串,整数和布尔值,但是我对这个函数没有任何了解。

这是我的代码。

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"));

MainActivity中的SharedPreferences

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 :(得分:0)

在活动类中使用以下方法:

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);