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