Java 切换按钮不适用于SharedReferences
我正在使用应用程序中的开关按钮打开/关闭音乐。我正在使用SharedReferences保存切换按钮的最后状态。但是,当我退出应用程序并再次运行时,它会始终将“关闭”状态作为默认状态。我想一直保存用户选择的状态,即使他们关闭并再次运行应用程序。下面是我的代码`公共类设置视图扩展AppCompatActivity{Java 切换按钮不适用于SharedReferences,java,android,togglebutton,Java,Android,Togglebutton,我正在使用应用程序中的开关按钮打开/关闭音乐。我正在使用SharedReferences保存切换按钮的最后状态。但是,当我退出应用程序并再次运行时,它会始终将“关闭”状态作为默认状态。我想一直保存用户选择的状态,即使他们关闭并再次运行应用程序。下面是我的代码`公共类设置视图扩展AppCompatActivity{ private Switch musicSwitch; @Override protected void onCreate(Bundle savedInstanceState) {
private Switch musicSwitch;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
musicSwitch = findViewById(R.id.sLLmusicSwitch);
SharedPreferences sharedPrefs = getSharedPreferences("save", MODE_PRIVATE);
musicSwitch.setChecked(sharedPrefs.getBoolean("value", true));
switchCheckListener();
}
private void switchCheckListener() {
musicSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (musicSwitch.isChecked()) {
// saving state of the switch button
SharedPreferences.Editor editor = getSharedPreferences("save", MODE_PRIVATE).edit();
editor.putBoolean("NameOfThingToSave", true);
editor.apply();
musicSwitch.setChecked(true);
// turn on music
Repository.getInstance().startMusic();
Toast.makeText(getApplicationContext(), "Music on", Toast.LENGTH_SHORT).show();
} else {
// saving state of the switch button
SharedPreferences.Editor editor = getSharedPreferences("save", MODE_PRIVATE).edit();
editor.putBoolean("NameOfThingToSave", false);
editor.apply();
musicSwitch.setChecked(false);
//turn off music
Repository.getInstance().pauseMusic();
Toast.makeText(getApplicationContext(), "Music off", Toast.LENGTH_SHORT).show();
}
}
});
}
}
`您正在将布尔状态保存到共享首选项下的键
NameOfThingToSave
,并在onCreate上使用键value
检索它
在onCreate中,适当设置键值:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
musicSwitch = findViewById(R.id.sLLmusicSwitch);
SharedPreferences sharedpreferences = getSharedPreferences("save",
Context.MODE_PRIVATE);
switchCheckListener();
musicSwitch.setChecked(sharedpreferences.getBoolean("NameOfThingToSave", false));
}
谢谢,现在开关的状态正常,但每次我关闭并再次运行应用程序时,音乐仍处于关闭状态。知道为什么吗?调用
switchCheckListener()
在设置之前已选中
。非常感谢!它现在工作得很好,但我还有一个小问题。当我将音乐状态保持为“开”状态并关闭应用程序并再次运行时,音乐不会启动,直到我进入“设置”活动。有什么想法吗?你需要调用这个Repository.getInstance().startMusic()代码>当你的应用程序启动时,在任何活动中,检查首选项是否已启用音乐。