我在應用程序中使用開關按鈕來打開/關閉音樂。我正在使用 SharedPreferences 來保存切換按鈕的最后狀態。但是,當我退出應用程序并再次運行時,它始終默認為“關閉”狀態。我想始終保存用戶選擇的狀態,即使他們關閉并再次運行應用程序也是如此。這是我的代碼`public class SettingsView extends AppCompatActivity {private Switch musicSwitch;@Overrideprotected 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(); } } });}
1 回答

呼如林
TA貢獻1798條經驗 獲得超3個贊
您將布爾狀態保存到 key 下的共享首選項中NameOfThingToSave,并在 onCreate 上使用 key 檢索它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));
}
添加回答
舉報
0/150
提交
取消