我正在编写一个使用 SharedPreferences 的应用程序,其中一个是日期,所以我最终创建了偏好和意图所以这就像是另一个活动的按钮,用户可以从选择器中选择日期和时间,并将值作为字符串存储在我的 SharedPreferences ,到目前为止一切顺利。 但是,我希望 “首选项按钮” 将字符串加载到实现 OnSharedPreferenceChangeListener 的Summary属性中,I能够为我的 EditTextPreference 对象做到这一点,到目前为止这是我的代码:
public class SettingsActivity extends PreferenceActivity implements OnSharedPreferenceChangeListener {
// DECLARATION OF USED OBJECTS
EditTextPreference userId;
EditTextPreference userName;
EditTextPreference hospital;
Preference dateTime;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.activity_preferences);
//LOAD SHARED PREFERENCES
SharedPreferences getData = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
//ASSING EACH DECLARED CONTROL A PREFERENCE
userId = (EditTextPreference) getPreferenceScreen().findPreference("pref_userId");
userName = (EditTextPreference) getPreferenceScreen().findPreference("pref_username");
hospital = (EditTextPreference) getPreferenceScreen().findPreference("pref_hospital");
dateTime = (Preference) getPreferenceScreen().findPreference("pref_dateTime");
}
@Override
protected void onPause() {
// STOPS MY LISTENER WHEN A KEY CHANGES
super.onPause();
getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
}
@Override
// SETS UP MY LISTENER WHEN A KEY CHANGES
protected void onResume() {
super.onResume();
// LOADS SHARED PREFERENCES INTO THE PREFERENCES SUMMARIES
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
userId.setSummary(sharedPreferences.getString("pref_userId", ""));
userName.setSummary(sharedPreferences.getString("pref_username", ""));
hospital.setSummary(sharedPreferences.getString("pref_hospital", ""));
dateTime.setSummary(sharedPreferences.getString("pref_dateTime", ""));
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
}
//REFRESHES THE SUMMARIES WHEN A PREFERNECE IS CHANGED
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
if (key.equals("pref_userId")) {
userId.setSummary(sharedPreferences.getString(key, ""));
}else
if (key.equals("pref_username")) {
userName.setSummary(sharedPreferences.getString(key, ""));
}else
if (key.equals("pref_hospital")) {
hospital.setSummary(sharedPreferences.getString(key, ""));
}else
if (key.equals("pref_dateTime")) {
dateTime.setSummary(sharedPreferences.getString(key, ""));
}
}
此代码不会在Eclipse上生成任何错误,因此它允许我对其进行测试,但当我尝试进入 PreferenceActivity
时,我会意外停止该应用错误在 OnResume 和/或 onSharedPreferenceChanged 方法上,有关解决方法的任何想法,因此我可以在此<上显示已保存的 SharedPreference strong>偏好使用 PreferenceActivity 的这个工具进行总结,或者应该使用另一个approch(请记住我有一小部分API8)。谢谢你们,任何帮助都会得到真正的帮助。