Initialize SubtypeLocale from Settings (DO NOT MERGE)

Bug: 6781106
Change-Id: Ic1b2b8363486820eabaa415ab3812c0e8565b7bb
This commit is contained in:
Tadashi G. Takaoka 2012-07-04 18:22:40 +09:00
parent 7f7947c97b
commit bffa6cc1b2
2 changed files with 11 additions and 1 deletions

View file

@ -116,6 +116,10 @@ public class Settings extends InputMethodSettingsFragment
final Resources res = getResources(); final Resources res = getResources();
final Context context = getActivity(); final Context context = getActivity();
// When we are called from the Settings application but we are not already running, the
// {@link SubtypeLocale} class may not have been initialized. It is safe to call
// {@link SubtypeLocale#init(Context)} multiple times.
SubtypeLocale.init(context);
mVoicePreference = (ListPreference) findPreference(PREF_VOICE_MODE); mVoicePreference = (ListPreference) findPreference(PREF_VOICE_MODE);
mShowCorrectionSuggestionsPreference = mShowCorrectionSuggestionsPreference =
(ListPreference) findPreference(PREF_SHOW_SUGGESTIONS_SETTING); (ListPreference) findPreference(PREF_SHOW_SUGGESTIONS_SETTING);

View file

@ -41,6 +41,7 @@ public class SubtypeLocale {
public static final String QWERTY = "qwerty"; public static final String QWERTY = "qwerty";
public static final int UNKNOWN_KEYBOARD_LAYOUT = R.string.subtype_generic; public static final int UNKNOWN_KEYBOARD_LAYOUT = R.string.subtype_generic;
private static boolean sInitialized = false;
private static String[] sPredefinedKeyboardLayoutSet; private static String[] sPredefinedKeyboardLayoutSet;
// Keyboard layout to its display name map. // Keyboard layout to its display name map.
private static final HashMap<String, String> sKeyboardLayoutToDisplayNameMap = private static final HashMap<String, String> sKeyboardLayoutToDisplayNameMap =
@ -69,7 +70,10 @@ public class SubtypeLocale {
// Intentional empty constructor for utility class. // Intentional empty constructor for utility class.
} }
public static void init(Context context) { // Note that this initialization method can be called multiple times.
public static synchronized void init(Context context) {
if (sInitialized) return;
final Resources res = context.getResources(); final Resources res = context.getResources();
final String[] predefinedLayoutSet = res.getStringArray(R.array.predefined_layouts); final String[] predefinedLayoutSet = res.getStringArray(R.array.predefined_layouts);
@ -109,6 +113,8 @@ public class SubtypeLocale {
final String keyboardLayoutSet = keyboardLayoutSetMap[i + 1]; final String keyboardLayoutSet = keyboardLayoutSetMap[i + 1];
sLocaleAndExtraValueToKeyboardLayoutSetMap.put(key, keyboardLayoutSet); sLocaleAndExtraValueToKeyboardLayoutSetMap.put(key, keyboardLayoutSet);
} }
sInitialized = true;
} }
public static String[] getPredefinedKeyboardLayoutSet() { public static String[] getPredefinedKeyboardLayoutSet() {