diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index f968a6c52b285a0ea69eeb6d80a480224d930fc3..ec3d89583687bcd3d5ba33a820e44060640ab1f3 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -857,6 +857,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
         // also wouldn't be consuming gesture data.
         mGestureConsumer = GestureConsumer.NULL_GESTURE_CONSUMER;
         mRichImm.clearSubtypeCaches();
+        mSubtypeSwitcher.refreshSubtypeInfo();
         final KeyboardSwitcher switcher = mKeyboardSwitcher;
         switcher.updateKeyboardTheme();
         final MainKeyboardView mainKeyboardView = switcher.getMainKeyboardView();
diff --git a/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java b/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java
index 13f79b49f6efe711b096811532aeeea0e582e645..6fc54954906ccef5f7ba81b388c3c7e2aac42d2a 100644
--- a/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java
+++ b/java/src/com/android/inputmethod/latin/SubtypeSwitcher.java
@@ -117,10 +117,14 @@ public final class SubtypeSwitcher {
         final NetworkInfo info = connectivityManager.getActiveNetworkInfo();
         mIsNetworkConnected = (info != null && info.isConnected());
 
-        onSubtypeChanged(mRichImm.getCurrentRawSubtype());
+        refreshSubtypeInfo();
         updateParametersOnStartInputView();
     }
 
+    public void refreshSubtypeInfo() {
+        onSubtypeChanged(mRichImm.getCurrentRawSubtype());
+    }
+
     /**
      * Update parameters which are changed outside LatinIME. This parameters affect UI so that they
      * should be updated every time onStartInputView is called.