From b355683253506fbe6112ee81775caf02c1b7485c Mon Sep 17 00:00:00 2001 From: Satoshi Kataoka Date: Tue, 23 Jul 2013 16:47:40 +0900 Subject: [PATCH] Stop redirecting the user dicitonary settings fragments Bug: 9755092 Change-Id: If4443412ca8f33e076edbe2c23c15b07b9b89fa9 --- .../InputMethodAndLanguageSettings.java | 33 ++++++++++++++++++- .../inputmethod/UserDictionaryList.java | 25 ++------------ 2 files changed, 34 insertions(+), 24 deletions(-) diff --git a/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java b/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java index 465895541a0..45b118284d9 100644 --- a/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java +++ b/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java @@ -20,10 +20,12 @@ import com.android.settings.R; import com.android.settings.Settings.KeyboardLayoutPickerActivity; import com.android.settings.Settings.SpellCheckersSettingsActivity; import com.android.settings.SettingsPreferenceFragment; +import com.android.settings.UserDictionarySettings; import com.android.settings.Utils; import com.android.settings.VoiceInputOutputSettings; import android.app.Activity; +import android.app.Fragment; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; @@ -38,6 +40,7 @@ import android.os.Handler; import android.preference.CheckBoxPreference; import android.preference.ListPreference; import android.preference.Preference; +import android.preference.Preference.OnPreferenceClickListener; import android.preference.PreferenceCategory; import android.preference.PreferenceScreen; import android.provider.Settings; @@ -200,7 +203,35 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment // not present or disabled. In this case we need to remove the preference. getPreferenceScreen().removePreference(userDictionaryPreference); } else { - userDictionaryPreference.setFragment(UserDictionaryList.class.getName()); + userDictionaryPreference.setOnPreferenceClickListener( + new OnPreferenceClickListener() { + @Override + public boolean onPreferenceClick(Preference arg0) { + // Redirect to UserDictionarySettings if the user needs only one + // language. + final Bundle extras = new Bundle(); + final Class targetFragment; + if (localeSet.size() <= 1) { + if (!localeSet.isEmpty()) { + // If the size of localeList is 0, we don't set the locale + // parameter in the extras. This will be interpreted by the + // UserDictionarySettings class as meaning + // "the current locale". Note that with the current code for + // UserDictionaryList#getUserDictionaryLocalesSet() + // the locale list always has at least one element, since it + // always includes the current locale explicitly. + // @see UserDictionaryList.getUserDictionaryLocalesSet(). + extras.putString("locale", localeSet.first()); + } + targetFragment = UserDictionarySettings.class; + } else { + targetFragment = UserDictionaryList.class; + } + startFragment(InputMethodAndLanguageSettings.this, + targetFragment.getCanonicalName(), -1, extras); + return true; + } + }); } } diff --git a/src/com/android/settings/inputmethod/UserDictionaryList.java b/src/com/android/settings/inputmethod/UserDictionaryList.java index 89774d2d24d..408ec030fa4 100644 --- a/src/com/android/settings/inputmethod/UserDictionaryList.java +++ b/src/com/android/settings/inputmethod/UserDictionaryList.java @@ -124,9 +124,8 @@ public class UserDictionaryList extends SettingsPreferenceFragment { /** * Creates the entries that allow the user to go into the user dictionary for each locale. * @param userDictGroup The group to put the settings in. - * @return the shown language set */ - protected TreeSet createUserDictSettingsAndReturnSet(PreferenceGroup userDictGroup) { + protected void createUserDictSettings(PreferenceGroup userDictGroup) { final Activity activity = getActivity(); userDictGroup.removeAll(); final TreeSet localeSet = @@ -144,7 +143,6 @@ public class UserDictionaryList extends SettingsPreferenceFragment { userDictGroup.addPreference(createUserDictionaryPreference(locale, activity)); } } - return localeSet; } /** @@ -173,25 +171,6 @@ public class UserDictionaryList extends SettingsPreferenceFragment { @Override public void onResume() { super.onResume(); - final TreeSet localeSet = createUserDictSettingsAndReturnSet(getPreferenceScreen()); - if (localeSet.size() <= 1) { - // Redirect to UserDictionarySettings if the user needs only one language. - final Bundle extras = new Bundle(); - if (!localeSet.isEmpty()) { - // If the size of localeList is 0, we don't set the locale parameter in the - // extras. This will be interpreted by the UserDictionarySettings class as - // meaning "the current locale". - // Note that with the current code for - // UserDictionaryList#getUserDictionaryLocalesSet() - // the locale list always has at least one element, since it always includes - // the current locale explicitly. - // @see UserDictionaryList.getUserDictionaryLocalesSet(). - extras.putString("locale", localeSet.first()); - } - startFragment(this, - com.android.settings.UserDictionarySettings.class.getCanonicalName(), -1, - extras); - finish(); - } + createUserDictSettings(getPreferenceScreen()); } }