我正在尝试从菜单中更改某些文本和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;
}
});
}
});
答案 0 :(得分:2)
您需要更改此内容
if(id == R.id.menu_back_white) {
saveColor(false); //I changed true to false
} else if (id == R.id.menu_back_black) {
saveColor(true); //I changed false to true
}
因为当“ getChangeColor()”为假时,您将其设置为白色:
switchOnOff = getChangeColor();
if (switchOnOff) {
setColorGreyImageButton();
} else {
setColorWhiteImageButton();
}