我有一個Activity
,當點擊菜單和一個按鈕出現在那裏,進入PreferenceActivity
,然後加載三個ListPreferences
。 ListPreference
讓用戶選擇幾個值來更新遠程數據庫,我希望在應用程序暫停時保存這些值。Android偏好設置:保存在Activity或PreferenceActivity中
由於ListPreference
在PreferenceActivity
,我怎麼能得到這些值? 我應該在哪裏保存當前首選項狀態,在Activity
或PreferenceActivity
?
這是我在Activity.java
迄今所做的:
[...]
private void updateFromPreferences() {
Context context = getApplicationContext();
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
callsFrequencyUpdate = Integer.parseInt(prefs.getString(Preferences.CALLS_FREQUENCY_PREF, "0"));
smsFrequencyUpdate = Integer.parseInt(prefs.getString(Preferences.SMS_FREQUENCY_PREF, "0"));
locationFrequencyUpdate = Integer.parseInt(prefs.getString(Preferences.LOCATION_FREQUENCY_PREF, "0"));
}
private void savePreferences() {
SharedPreferences activityPreferences = getPreferences(Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = activityPreferences.edit();
editor.putInt(Preferences.CALLS_FREQUENCY_PREF, callsFrequencyUpdate);
editor.putInt(Preferences.SMS_FREQUENCY_PREF, smsFrequencyUpdate);
editor.putInt(Preferences.LOCATION_FREQUENCY_PREF, locationFrequencyUpdate);
editor.commit();
}
@Override
protected void onPause() {
super.onPause();
savePreferences();
}
這是我Preferences.java
文件:
public class Preferences extends PreferenceActivity {
public static final String CALLS_FREQUENCY_PREF = "CALLS_FREQUENCY_PREF";
public static final String SMS_FREQUENCY_PREF = "SMS_FREQUENCY_PREF";
public static final String LOCATION_FREQUENCY_PREF = "LOCATION_FREQUENCY_PREF";
SharedPreferences prefs;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
}
非常感謝提前!