我有一個設置頁面,用戶可以在該頁面中爲我的應用程序選擇倒數計時器的時間。它有3個單選按鈕,我想要發生的是當用戶點擊其中一個按鈕時,一個int值將被保存到SharedPreferences中作爲另一個活動中的定時器的「時間」參數。onCheckedChangedListener被觸發但不會將數據保存到SharedPreferences(Android)
單選按鈕的onCheckedChangedListener被觸發,但時間值不會保存到SharedPrefs。
這裏是我的設置活動的片段:
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
switch (buttonView.getId()) {
case R.id.thirty:
prefs = PreferenceManager.getDefaultSharedPreferences(this);
editor = prefs.edit();
editor.putInt("time", 30000).apply();
Toast.makeText(this, "h", Toast.LENGTH_SHORT).show();
break;
case R.id.fifty:
editor.putInt("time", 50000);
editor.apply();
break;
case R.id.ninety:
editor.putInt("time", 90000);
editor.apply();
break;
}
}
而且這裏是我(失敗)的另一項活動檢索數據:
mprefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
time = mprefs.getInt("time", 50000);
cdTimer = new Timer(time, 1000);
另一件事是,當我設置的onClickListener這樣的單選按鈕,而不是onCheckedChanged一切正常
thirty = (RadioButton)findViewById(R.id.thirty);
thirty.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
prefs = PreferenceManager.getDefaultSharedPreferences(Options.this);
editor = prefs.edit();
editor.putInt("time", 30000).apply();
}
});
有人可以解釋爲什麼會發生這種情況嗎?我對android編程非常陌生,所以請在你的解釋中溫和一些。謝謝。
使用意圖在活動之間傳遞數據並且不要忘記調用commit()來保存對首選項的更改 – Nanoc