Java 为什么swtich会回到初始阶段?
我已经创建了一个Java 为什么swtich会回到初始阶段?,java,android,Java,Android,我已经创建了一个开关,并且我正在将布尔值保存到共享引用,但是当我恢复活动时,开关返回到关闭,如果它被打开,我想保持它打开,如果它被关闭,保持它关闭 这是我的开关代码: buttonSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton c
开关
,并且我正在将布尔值保存到共享引用
,但是当我恢复活动时,开关返回到关闭,如果它被打开,我想保持它打开,如果它被关闭,保持它关闭
这是我的开关代码:
buttonSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
if(isChecked){
switched = "ON";
SharedPreferences.Editor editor = getSharedPreferences("com.example.xyz", MODE_PRIVATE).edit();
editor.putBoolean("SWTCH", buttonSwitch.isChecked());
editor.commit();
}else{
switched = "OFF";
SharedPreferences.Editor editor = getSharedPreferences("com.example.xyz", MODE_PRIVATE).edit();
editor.putBoolean("SWTCH", buttonSwitch.isChecked());
editor.commit();
}
}
});
下面是onCreate
SharedReferences:
您正在访问一个完全不同的共享首选项实例
"com.example.xyle"
及
请将它们更改为相等您正在访问一个完全不同的共享首选项实例
"com.example.xyle"
及
请将它们更改为相等在阅读和书写时使用相同的首选项名称。 您还可以将onCheckedChanged增强为:
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
switched = isChecked ? "ON":"OFF";
SharedPreferences.Editor editor = getSharedPreferences("com.example.xyz", MODE_PRIVATE).edit();
editor.putBoolean("SWTCH", isChecked);
editor.commit();
}
在阅读和书写时使用相同的首选项名称。 您还可以将onCheckedChanged增强为:
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
switched = isChecked ? "ON":"OFF";
SharedPreferences.Editor editor = getSharedPreferences("com.example.xyz", MODE_PRIVATE).edit();
editor.putBoolean("SWTCH", isChecked);
editor.commit();
}
太好了,我没有注意到这是个问题,我会在9分钟内接受你的回答。@i.Mytyuk没问题。可以考虑使用默认共享首选项。而不是私人的,除非有具体的原因。另外,
apply()
比commit()
@I.Mytyuk更好,为了避免这种情况,尽量不要使用内联字符串,而是使用常量。@VladMatvienko是一个关于私人首选项路由的好建议。尽可能减少恢复字符串的打字错误。@VladMatvienko我当然会,我只是android新手,所以我还有很多东西要学。太好了,我没有注意到这是个问题,我会在9分钟内接受你的答案。@i.Mytyuk没问题。可以考虑使用默认共享首选项。而不是私人的,除非有具体的原因。另外,apply()
比commit()
@I.Mytyuk更好,为了避免这种情况,尽量不要使用内联字符串,而是使用常量。@VladMatvienko是一个关于私人首选项路由的好建议。尽可能减少重新生成的字符串的拼写错误。@VladMatvienko我当然会的,我只是android新手,所以我还有很多东西要学。