Android 如何更改首选项屏幕的摘要以了解Java

Android 如何更改首选项屏幕的摘要以了解Java,android,sharedpreferences,preferences,Android,Sharedpreferences,Preferences,我正在编写一个应用程序,该应用程序使用共享数据引用,其中一个是日期,因此,我最终创建了一个带有和意图的首选项,这就像是另一个活动的按钮,用户可以从选择器中选择日期和时间,并在我的共享引用中将值存储为字符串,目前为止效果良好。 但是,我希望我的首选项按钮“将该字符串加载到它的摘要属性中,实现了OnSharedPreferenceChangeListener,我已经能够为我的EditTextPreference对象执行该操作,以下是我的代码: public class SettingsActivit

我正在编写一个应用程序,该应用程序使用共享数据引用,其中一个是日期,因此,我最终创建了一个带有和意图的首选项,这就像是另一个活动的按钮,用户可以从选择器中选择日期和时间,并在我的共享引用中将值存储为字符串,目前为止效果良好。 但是,我希望我的首选项按钮“将该字符串加载到它的摘要属性中,实现了OnSharedPreferenceChangeListener,我已经能够为我的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上生成任何错误,因此允许我对其进行测试,但当我尝试进入我的首选项活动时,应用程序将意外停止

错误出现在OnResume和/或onSharedPreferenceChanged方法上,任何关于解决方法的想法,以便我可以使用此首选项活动的实现在该首选项上显示我保存的SharedReference摘要,或者应该使用其他方法(请记住,我有一个API8分钟)。谢谢各位,任何帮助都将非常感谢