OSDN Git Service

Refresh "InputMethodPreference"s onResume
authorSatoshi Kataoka <satok@google.com>
Fri, 18 Oct 2013 07:57:57 +0000 (16:57 +0900)
committerSatoshi Kataoka <satok@google.com>
Fri, 18 Oct 2013 09:50:37 +0000 (18:50 +0900)
Bug: 11245599

Change-Id: I015075d57ebed94d6b76a66de135ee748e27e3a6

src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java

index a2700cf..1e4c8b1 100644 (file)
@@ -166,25 +166,6 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment
             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 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment
 
     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();