Fix singleton/utility classes initialization in SettingsFragment

This is a follow up of Ide3cd3acba.

Bug: 8632344
Change-Id: Iafe51798a1a74eff5d8fcd6f0117d16b419d447d
main
Tadashi G. Takaoka 2013-04-17 16:11:47 +09:00
parent 888a194cf1
commit bb5deb82b5
2 changed files with 12 additions and 7 deletions

View File

@ -77,12 +77,13 @@ public final class SettingsFragment 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 // When we are called from the Settings application but we are not already running, some
// {@link SubtypeLocale} class may not have been initialized. It is safe to call // singleton and utility classes may not have been initialized. We have to call
// {@link SubtypeLocale#init(Context)} multiple times. // initialization method of these classes here. See {@link LatinIME#onCreate()}.
SubtypeSwitcher.init(context);
SubtypeLocale.init(context); SubtypeLocale.init(context);
// Ditto for {@link AudioAndHapticFeedbackManager} class.
AudioAndHapticFeedbackManager.init(context); AudioAndHapticFeedbackManager.init(context);
mVoicePreference = (ListPreference) findPreference(Settings.PREF_VOICE_MODE); mVoicePreference = (ListPreference) findPreference(Settings.PREF_VOICE_MODE);
mShowCorrectionSuggestionsPreference = mShowCorrectionSuggestionsPreference =
(ListPreference) findPreference(Settings.PREF_SHOW_SUGGESTIONS_SETTING); (ListPreference) findPreference(Settings.PREF_SHOW_SUGGESTIONS_SETTING);

View File

@ -80,6 +80,7 @@ public final class SubtypeSwitcher {
public static void init(final Context context) { public static void init(final Context context) {
SubtypeLocale.init(context); SubtypeLocale.init(context);
RichInputMethodManager.init(context);
sInstance.initialize(context); sInstance.initialize(context);
} }
@ -87,10 +88,13 @@ public final class SubtypeSwitcher {
// Intentional empty constructor for singleton. // Intentional empty constructor for singleton.
} }
private void initialize(final Context service) { private void initialize(final Context context) {
mResources = service.getResources(); if (mResources != null) {
return;
}
mResources = context.getResources();
mRichImm = RichInputMethodManager.getInstance(); mRichImm = RichInputMethodManager.getInstance();
mConnectivityManager = (ConnectivityManager) service.getSystemService( mConnectivityManager = (ConnectivityManager) context.getSystemService(
Context.CONNECTIVITY_SERVICE); Context.CONNECTIVITY_SERVICE);
mNoLanguageSubtype = mRichImm.findSubtypeByLocaleAndKeyboardLayoutSet( mNoLanguageSubtype = mRichImm.findSubtypeByLocaleAndKeyboardLayoutSet(
SubtypeLocale.NO_LANGUAGE, SubtypeLocale.QWERTY); SubtypeLocale.NO_LANGUAGE, SubtypeLocale.QWERTY);