![](/img/trans.png)
[英]Is possible to change the summary of EditTextPreference dynamically in Android?
[英]Update EditTextPreference Summary on Post SyncTask
在我的應用程序中,一旦用戶提供三個輸入, 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("");
}
}
}
}
創建一個監聽器並在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);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.