我有一个Activity
,当点击菜单和出现在那里的按钮时,会转到PreferenceActivity
,然后加载三个ListPreferences
。
ListPreference
允许用户选择多个值来更新远程数据库,我希望在应用程序暂停时保存这些值。
由于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);
}
}
提前多多感谢!
答案 0 :(得分:1)
你的提问不是很清楚,因为答案已经在问题中......
PreferenceActivity
上的数据会自动保存
您可以像这样访问SharedPreferences
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);
String value = pref.getString("name_of_my_pref", "default_value");
答案 1 :(得分:0)
如果它们位于sharedPrefs中,那么写入和读取这些值似乎无关紧要。但是,如果您遇到问题,为什么不在主Activity中使用startActivityForResult()调用PreferenceActivity,在PreferenceActivity中调用onPause(),只需将信息传递到使用intent.putExtras()的bundle / intent中并将其发回用setResult(),finish()到你的主Activity?然后通过使用intent.getExtras()拉取数据,在主Activity中做任何你想做的事情?对不起,如果我错过了你的要求,但不是很清楚。