如何使用Java上的Intent更改PreferenceScreen的摘要

时间:2013-11-28 07:23:16

标签: android sharedpreferences preferences

我正在编写一个使用 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)。谢谢你们,任何帮助都会得到真正的帮助。

0 个答案:

没有答案