【问题标题】:EditTextPreference with false persistent does not call onSharedPreferenceChanged具有假持久性的 EditTextPreference 不会调用 onSharedPreferenceChanged
【发布时间】:2015-05-22 10:20:55
【问题描述】:
我有这个 EditTextPreference
<EditTextPreference
android:title="@string/settings_server"
android:summary="@string/server_name_message"
android:persistent="false"
android:key="SERVER_NAME" />
但是使用 persistent="false" 它不会调用 onSharedPreferenceChanged 方法。
我怎样才能检测到这个事件保持android:persistent="false"
【问题讨论】:
标签:
android
sharedpreferences
android-preferences
【解决方案1】:
您必须在 PreferenceActivity 或 PreferenceFragment 的代码中附加自定义侦听器:
EditTextPreference prefServerName = (EditTextPreference) findPreference("SERVER_NAME");
prefServerName.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
String value = (String) newValue;
// do what you need
return true; // indicates you processed the new value
}
});