在我的应用程序中,一旦用户提供三个输入,AsyncTask
启动连接到服务器并获取另外两个字段的信息。完成AsyncTask
后,我想在打开的设置页面中设置这两个接收的值。
我搜索并尝试了此代码,但没有更新已从服务器获取值的字段的摘要。
问题是我无法将从服务器收到的值设置为EditTextPreference
的摘要。如果我重新打开设置页面,它会显示值而不是重新打开。
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
updatePreference(key);
}
private void updatePreference(String key) {
if (key.equals("id")) {
Preference preference = findPreference(key);
if (preference instanceof EditTextPreference) {
EditTextPreference editTextPreference = (EditTextPreference) preference;
if (editTextPreference.getText().trim().length() > 0) {
editTextPreference.setSummary(editTextPreference.getText());
} else {
editTextPreference.setSummary("");
}
}
} else if (key.equals("sclass")) {
Preference preference = findPreference(key);
if (preference instanceof EditTextPreference) {
EditTextPreference editTextPreference = (EditTextPreference) preference;
if (editTextPreference.getText().trim().length() > 0) {
editTextPreference.setSummary(editTextPreference.getText());
} else {
editTextPreference.setSummary("");
}
}
}
}
答案 0 :(得分:0)
创建一个监听器并在onCreate
sharedPrefYourObj.registerOnSharedPreferenceChangeListener(this);
尝试注册您的监听器onResume
并取消注册onPause
,而不是onCreate
!
示例:
protected void onResume() {
super.onResume();
getPreferenceScreen().getSharedPreferences()
.registerOnSharedPreferenceChangeListener(this);
}
protected void onPause() {
super.onPause();
getPreferenceScreen().getSharedPreferences()
.unregisterOnSharedPreferenceChangeListener(this);
}