Stop redirecting the user dicitonary settings fragments

Bug: 9755092
Change-Id: If4443412ca8f33e076edbe2c23c15b07b9b89fa9
This commit is contained in:
Satoshi Kataoka
2013-07-23 16:47:40 +09:00
parent a5c08c9a6f
commit b355683253
2 changed files with 34 additions and 24 deletions

View File

@@ -20,10 +20,12 @@ import com.android.settings.R;
import com.android.settings.Settings.KeyboardLayoutPickerActivity; import com.android.settings.Settings.KeyboardLayoutPickerActivity;
import com.android.settings.Settings.SpellCheckersSettingsActivity; import com.android.settings.Settings.SpellCheckersSettingsActivity;
import com.android.settings.SettingsPreferenceFragment; import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.UserDictionarySettings;
import com.android.settings.Utils; import com.android.settings.Utils;
import com.android.settings.VoiceInputOutputSettings; import com.android.settings.VoiceInputOutputSettings;
import android.app.Activity; import android.app.Activity;
import android.app.Fragment;
import android.content.ContentResolver; import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
@@ -38,6 +40,7 @@ import android.os.Handler;
import android.preference.CheckBoxPreference; import android.preference.CheckBoxPreference;
import android.preference.ListPreference; import android.preference.ListPreference;
import android.preference.Preference; import android.preference.Preference;
import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceCategory; import android.preference.PreferenceCategory;
import android.preference.PreferenceScreen; import android.preference.PreferenceScreen;
import android.provider.Settings; 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. // not present or disabled. In this case we need to remove the preference.
getPreferenceScreen().removePreference(userDictionaryPreference); getPreferenceScreen().removePreference(userDictionaryPreference);
} else { } 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<? extends Fragment> 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;
}
});
} }
} }

View File

@@ -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. * 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. * @param userDictGroup The group to put the settings in.
* @return the shown language set
*/ */
protected TreeSet<String> createUserDictSettingsAndReturnSet(PreferenceGroup userDictGroup) { protected void createUserDictSettings(PreferenceGroup userDictGroup) {
final Activity activity = getActivity(); final Activity activity = getActivity();
userDictGroup.removeAll(); userDictGroup.removeAll();
final TreeSet<String> localeSet = final TreeSet<String> localeSet =
@@ -144,7 +143,6 @@ public class UserDictionaryList extends SettingsPreferenceFragment {
userDictGroup.addPreference(createUserDictionaryPreference(locale, activity)); userDictGroup.addPreference(createUserDictionaryPreference(locale, activity));
} }
} }
return localeSet;
} }
/** /**
@@ -173,25 +171,6 @@ public class UserDictionaryList extends SettingsPreferenceFragment {
@Override @Override
public void onResume() { public void onResume() {
super.onResume(); super.onResume();
final TreeSet<String> localeSet = createUserDictSettingsAndReturnSet(getPreferenceScreen()); createUserDictSettings(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();
}
} }
} }