Merge "Show text changes immediately." into oc-dr1-dev
am: 9af5d9a2d8
Change-Id: I933f19e29b98f1c7ff9e15fc4c3b098262b1f182
diff --git a/src/com/android/emergency/edit/EditMedicalInfoFragment.java b/src/com/android/emergency/edit/EditMedicalInfoFragment.java
index b79163b..0009fa9 100644
--- a/src/com/android/emergency/edit/EditMedicalInfoFragment.java
+++ b/src/com/android/emergency/edit/EditMedicalInfoFragment.java
@@ -40,10 +40,12 @@
for (int i = 0; i < PreferenceKeys.KEYS_EDIT_EMERGENCY_INFO.length; i++) {
final int index = i;
String preferenceKey = PreferenceKeys.KEYS_EDIT_EMERGENCY_INFO[i];
+
Preference preference = findPreference(preferenceKey);
preference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object value) {
+ // Log settings changes.
boolean notSet = TextUtils.isEmpty((String) value);
// 0 is the default subtype. In DP1 and DP2 we had no explicit subtype.
// Start at 30 to differentiate between before and after.
@@ -51,6 +53,12 @@
preference.getContext(),
MetricsEvent.ACTION_EDIT_EMERGENCY_INFO_FIELD,
30 + index * 2 + (notSet ? 0 : 1));
+ // If the preference implements OnPreferenceChangeListener, notify it of the
+ // change as well.
+ if (Preference.OnPreferenceChangeListener.class.isInstance(preference)) {
+ return ((Preference.OnPreferenceChangeListener) preference)
+ .onPreferenceChange(preference, value);
+ }
return true;
}
});
diff --git a/src/com/android/emergency/preferences/EmergencyEditTextPreference.java b/src/com/android/emergency/preferences/EmergencyEditTextPreference.java
index fb09eea..efb7adc 100644
--- a/src/com/android/emergency/preferences/EmergencyEditTextPreference.java
+++ b/src/com/android/emergency/preferences/EmergencyEditTextPreference.java
@@ -16,6 +16,7 @@
package com.android.emergency.preferences;
import android.content.Context;
+import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceViewHolder;
import android.text.TextUtils;
import android.util.AttributeSet;
@@ -29,7 +30,7 @@
* Custom {@link EditTextPreference} that allows us to refresh and update the summary.
*/
public class EmergencyEditTextPreference extends CustomEditTextPreference
- implements ReloadablePreferenceInterface {
+ implements Preference.OnPreferenceChangeListener, ReloadablePreferenceInterface {
private static final int MAX_LINES = 50;
@@ -62,6 +63,13 @@
}
@Override
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
+ String text = (String) newValue;
+ setSummary(text);
+ return true;
+ }
+
+ @Override
protected void onBindDialogView(View view) {
super.onBindDialogView(view);
getEditText().setSelection(getEditText().getText().length());
diff --git a/tests/robolectric/src/com/android/emergency/preferences/EmergencyEditTextPreferenceTest.java b/tests/robolectric/src/com/android/emergency/preferences/EmergencyEditTextPreferenceTest.java
index ca3f0c3..14e7a96 100644
--- a/tests/robolectric/src/com/android/emergency/preferences/EmergencyEditTextPreferenceTest.java
+++ b/tests/robolectric/src/com/android/emergency/preferences/EmergencyEditTextPreferenceTest.java
@@ -86,6 +86,14 @@
}
@Test
+ public void testOnPreferenceChange() throws Throwable {
+ final String medicalConditions = "Asthma";
+ mPreference.onPreferenceChange(mPreference, medicalConditions);
+
+ assertThat(mPreference.getSummary()).isEqualTo(medicalConditions);
+ }
+
+ @Test
public void testSetText() throws Throwable {
final String medicalConditions = "Asthma";
mPreference.setText(medicalConditions);