diff --git a/core/java/com/android/internal/inputmethod/InputMethodUtils.java b/core/java/com/android/internal/inputmethod/InputMethodUtils.java
index 634c661..726e8fb 100644
--- a/core/java/com/android/internal/inputmethod/InputMethodUtils.java
+++ b/core/java/com/android/internal/inputmethod/InputMethodUtils.java
@@ -583,7 +583,7 @@
      * Returns the language component of a given locale string.
      * TODO: Use {@link Locale#toLanguageTag()} and {@link Locale#forLanguageTag(String)}
      */
-    public static String getLanguageFromLocaleString(String locale) {
+    private static String getLanguageFromLocaleString(String locale) {
         final int idx = locale.indexOf('_');
         if (idx < 0) {
             return locale;
diff --git a/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodSubtypePreference.java b/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodSubtypePreference.java
index f824ec7..262e8db 100644
--- a/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodSubtypePreference.java
+++ b/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodSubtypePreference.java
@@ -42,7 +42,7 @@
         this(context,
                 imi.getId() + subtype.hashCode(),
                 InputMethodAndSubtypeUtil.getSubtypeLocaleNameAsSentence(subtype, context, imi),
-                subtype.getLocale(),
+                subtype.getLocaleObject(),
                 context.getResources().getConfiguration().locale);
     }
 
@@ -51,20 +51,19 @@
             final Context context,
             final String prefKey,
             final CharSequence title,
-            final String subtypeLocaleString,
+            final Locale subtypeLocale,
             final Locale systemLocale) {
         super(context);
         setPersistent(false);
         setKey(prefKey);
         setTitle(title);
-        if (TextUtils.isEmpty(subtypeLocaleString)) {
+        if (subtypeLocale == null) {
             mIsSystemLocale = false;
             mIsSystemLanguage = false;
         } else {
-            mIsSystemLocale = subtypeLocaleString.equals(systemLocale.toString());
+            mIsSystemLocale = subtypeLocale.equals(systemLocale);
             mIsSystemLanguage = mIsSystemLocale
-                    || InputMethodUtils.getLanguageFromLocaleString(subtypeLocaleString)
-                            .equals(systemLocale.getLanguage());
+                    || TextUtils.equals(subtypeLocale.getLanguage(), systemLocale.getLanguage());
         }
     }
 
diff --git a/packages/SettingsLib/tests/integ/src/com/android/settingslib/inputmethod/InputMethodSubtypePreferenceTest.java b/packages/SettingsLib/tests/integ/src/com/android/settingslib/inputmethod/InputMethodSubtypePreferenceTest.java
index 131d742..e591d8c 100644
--- a/packages/SettingsLib/tests/integ/src/com/android/settingslib/inputmethod/InputMethodSubtypePreferenceTest.java
+++ b/packages/SettingsLib/tests/integ/src/com/android/settingslib/inputmethod/InputMethodSubtypePreferenceTest.java
@@ -19,6 +19,7 @@
 import android.support.test.InstrumentationRegistry;
 import android.support.test.filters.SmallTest;
 import android.support.test.runner.AndroidJUnit4;
+import android.text.TextUtils;
 
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -98,11 +99,14 @@
             final String subtypeLocaleString,
             final Locale systemLocale) {
         final String key = subtypeName + "-" + subtypeLocaleString + "-" + systemLocale;
+        final String subtypeLanguageTag = subtypeLocaleString.replace('_', '-');
+        final Locale subtypeLocale = TextUtils.isEmpty(subtypeLanguageTag)
+                ? null : Locale.forLanguageTag(subtypeLanguageTag);
         return new InputMethodSubtypePreference(
                 InstrumentationRegistry.getTargetContext(),
                 key,
                 subtypeName,
-                subtypeLocaleString,
+                subtypeLocale,
                 systemLocale);
     }
 }
