是否可以在共享首选项中保存无效



我有一个按钮可以更改MainActivity的颜色,但这仅在应用程序打开时才有效,如果我退出应用程序并再次打开它,它就会恢复为正常颜色即白色。如何使用共享首选项进行存储,您是否知道如何做到这一点,因为字符串,int和布尔值我可以保存,但我不知道此功能。

这是我的代码。

主要活动.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"));

主活动中的共享首选项

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

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

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()检查存储在SharedPreferences中的boolean值:

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

当您想更改调用中的值SharedPreferences时:

saveChangeColor(true); 

saveChangeColor(false);

最新更新