Я пытаюсь изменить цвета некоторого текста и MainActivity
из меню.У меня есть два меню, белого цвета и черного цвета, если я нажму белый, вернется цвет фона белый, кнопки черный, текст черный.Когда я нажму черный, вернется цвет фона серый, кнопки белые, текст белый.Я пытаюсь это сохранить с помощью SharedPreferences
, но он не работает всегда, он принимает серый цвет.Если я делаю это без SharedPreferences
и нажимаю на PopUpMenu
, это меняет цвет, но с SharedPreferences
это не работает, что-то пишу ложно.
Это мой код в MainActivity.class
.
private boolean switchOnOff;
public static final String Change_Color = "Change_Color";
switchOnOff = getChangeColor();
if (switchOnOff) {
setColorGreyImageButton();
} else {
setColorWhiteImageButton();
}
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 setColorWhiteImageButton() {
settings.setColorFilter(Color.parseColor("#FFFFFF"));
voiceSearch.setColorFilter(Color.parseColor("#FFFFFF"));
share.setColorFilter(Color.parseColor("#FFFFFF"));
search.setColorFilter(Color.parseColor("#FFFFFF"));
mainView.setBackgroundColor(Color.parseColor("#ff212121"));
}
public void saveColor(boolean changeColor) {
SharedPreferences sharedPreferences = getSharedPreferences("Color", MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean(getPackageName() + ".change_color", changeColor);
editor.apply();
}
private boolean getChangeColor() {
SharedPreferences sharedPreferences = getSharedPreferences("Color", MODE_PRIVATE);
return sharedPreferences.getBoolean(getPackageName() + ".change_color", false);
}
Это PopUpMenu
в MainActivity.class
mPopupMenu = new PopupMenu(this, settings);
MenuInflater menuInflater = mPopupMenu.getMenuInflater();
menuInflater.inflate(R.menu.main_settings, mPopupMenu.getMenu());
settings.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mPopupMenu.show();
mPopupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
int id = item.getItemId();
if(id == R.id.menu_back_white) {
saveColor(true);
} else if (id == R.id.menu_back_black) {
saveColor(false);
}
return false;
}
});
}
});