Do not merge. Refresh "InputMethodPreference"s onResume

Corresponding change is I015075d57ebed94d6b

Bug: 11245599
Change-Id: I8be2b9a81d41fab979afe000bd1bce6fc57550c7
diff --git a/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java b/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java
index a2700cf..1e4c8b1 100644
--- a/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java
+++ b/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java
@@ -166,25 +166,6 @@
             mKeyboardSettingsCategory.addPreference(currentIme);
         }
 
-        synchronized (mInputMethodPreferenceList) {
-            mInputMethodPreferenceList.clear();
-            final List<InputMethodInfo> imis = mInputMethodSettingValues.getInputMethodList();
-            final int N = (imis == null ? 0 : imis.size());
-            for (int i = 0; i < N; ++i) {
-                final InputMethodInfo imi = imis.get(i);
-                final InputMethodPreference pref = getInputMethodPreference(imi);
-                pref.setOnImePreferenceChangeListener(mOnImePreferenceChangedListener);
-                mInputMethodPreferenceList.add(pref);
-            }
-
-            if (!mInputMethodPreferenceList.isEmpty()) {
-                Collections.sort(mInputMethodPreferenceList);
-                for (int i = 0; i < N; ++i) {
-                    mKeyboardSettingsCategory.addPreference(mInputMethodPreferenceList.get(i));
-                }
-            }
-        }
-
         // Build hard keyboard and game controller preference categories.
         mIm = (InputManager)getActivity().getSystemService(Context.INPUT_SERVICE);
         updateInputDevices();
@@ -427,6 +408,28 @@
 
     private void updateInputMethodPreferenceViews() {
         synchronized (mInputMethodPreferenceList) {
+            // Clear existing "InputMethodPreference"s
+            for (final InputMethodPreference imp : mInputMethodPreferenceList) {
+                mKeyboardSettingsCategory.removePreference(imp);
+            }
+            mInputMethodPreferenceList.clear();
+            final List<InputMethodInfo> imis = mInputMethodSettingValues.getInputMethodList();
+            final int N = (imis == null ? 0 : imis.size());
+            for (int i = 0; i < N; ++i) {
+                final InputMethodInfo imi = imis.get(i);
+                final InputMethodPreference pref = getInputMethodPreference(imi);
+                pref.setOnImePreferenceChangeListener(mOnImePreferenceChangedListener);
+                mInputMethodPreferenceList.add(pref);
+            }
+
+            if (!mInputMethodPreferenceList.isEmpty()) {
+                Collections.sort(mInputMethodPreferenceList);
+                for (int i = 0; i < N; ++i) {
+                    mKeyboardSettingsCategory.addPreference(mInputMethodPreferenceList.get(i));
+                }
+            }
+
+            // update views status
             for (Preference pref : mInputMethodPreferenceList) {
                 if (pref instanceof InputMethodPreference) {
                     ((InputMethodPreference) pref).updatePreferenceViews();