我的设置对话框中的共享首选项未保存。单击“保存”,然后重新打开对话框时,首选项将重置为原始值。我觉得我错过了什么。任何帮助将不胜感激!
注意:
谢谢!
private void settingsButton() {
if(soundsOn == true) {
mplayerButtonClick.start();
}
//set up dialog
final Dialog setupDialog = new Dialog(getActivity());
setupDialog.setContentView(R.layout.settings);
setupDialog.setTitle("Choose Settings");
setupDialog.setCancelable(true);
TextView topSettings = (TextView)setupDialog.findViewById(R.id.chosensettings);
topSettings.setTypeface(tf);
soundsToggle = (Switch)setupDialog.findViewById(R.id.soundstoggle);
soundsToggle.setTypeface(tf);
if(soundsOn == true){
soundsToggle.setChecked(true);
}else if(soundsOn == false){
soundsToggle.setChecked(false);
}
soundsToggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
s = true;
} else {
s = false;
}
}
});
cuesToggle = (Switch)setupDialog.findViewById(R.id.cuestoggle);
cuesToggle.setTypeface(tf);
final boolean cuesToggleOn = preferences.getBoolean("cues", true);
if (cuesToggleOn == true){
cuesToggle.setChecked(true);
}else if(cuesToggleOn == false){
cuesToggle.setChecked(false);
}else{
cuesToggle.setChecked(true);
}
cuesToggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(cuesToggle.isChecked()){
c = true;
}else{
c = false;
}
}
});
listOnlyToggle = (Switch)setupDialog.findViewById(R.id.listonly);
listOnlyToggle.setTypeface(tf);
listOnlyOn = preferences.getBoolean("listonly", false);
if(listOnlyOn == true){
listOnlyToggle.setChecked(true);
}else if(listOnlyOn == false){
listOnlyToggle.setChecked(false);
}
listOnlyToggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
l = true;
} else {
l = false;
}
}
});
Button saveSetting = (Button)setupDialog.findViewById(R.id.save);
saveSetting.setTypeface(tf);
saveSetting.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(soundsOn == true) {
mplayerButtonClick.start();
}
if (s = true){
editor.putBoolean("sounds", true);
soundsOn = true;
}else if (s = false) {
editor.putBoolean("sounds", false);
soundsOn = false;
}
if (c = true){
editor.putBoolean("cues", true);
}else if (c = false){
editor.putBoolean("cues", false);
}
if (l = true){
editor.putBoolean("listonly", true);
}else if (l = false){
editor.putBoolean("listonly", false);
}
editor.commit();
Toast.makeText(getActivity(), "saved!", Toast.LENGTH_LONG).show();
setupDialog.dismiss();
}
});
setupDialog.show();
}
答案 0 :(得分:2)
条件s = true
始终为“true”。
说明强> 此检查分析方法控制和数据流,以报告始终为真或假的可能条件,静态证明其值不变的表达式,以及可能导致违约性合同违规的情况。
如果判断值是否为布尔值,则需要使用条件if(s)
。
如果您使用if(s == true)
。
说明强> 报告毫无意义或毫无意义的复杂布尔表达式。这样的表达式包括anding with true,oring with false,equor comparison with boolean literal,或negation of boolean literal。这样的表达可能是自动重构的结果,并未完全贯彻完成,并且在任何情况下都不太可能是开发人员打算做的事情。
您在代码中使用的更好方式是if(s)
。
答案 1 :(得分:0)
我认为您应该将“if(s = true)”更改为“if(s)”,您应该使用条件检查而不是赋值。