Set the default locale list when it is changed.

When the system language is changed by the Settings app, we need to call
LocaleList.setDefault() to change the default locale list
since components like TextView should be able to assume that
LocaleList.getDefault() returns the latest system locale list.

BUG: 26731035
Change-Id: I482567476e1b14cd9b4716343183627f81d96ace
This commit is contained in:
Seigo Nonaka
2016-01-22 17:22:11 +09:00
committed by Roozbeh Pournader
parent 60965d2271
commit cada57a57b
2 changed files with 7 additions and 6 deletions

View File

@@ -83,6 +83,7 @@ import android.util.AndroidRuntimeException;
import android.util.ArrayMap;
import android.util.DisplayMetrics;
import android.util.EventLog;
import android.util.LocaleList;
import android.util.Log;
import android.util.LogPrinter;
import android.util.Pair;
@@ -128,7 +129,6 @@ import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Objects;
import java.util.TimeZone;
@@ -4887,9 +4887,9 @@ public final class ActivityThread {
TimeZone.setDefault(null);
/*
* Initialize the default locale in this process for the reasons we set the time zone.
* Initialize the default locales in this process for the reasons we set the time zone.
*/
Locale.setDefault(data.config.locale);
LocaleList.setDefault(data.config.getLocales());
/*
* Update the system configuration since its preloaded and might not

View File

@@ -27,6 +27,7 @@ import android.content.res.ResourcesKey;
import android.hardware.display.DisplayManagerGlobal;
import android.util.ArrayMap;
import android.util.DisplayMetrics;
import android.util.LocaleList;
import android.util.Log;
import android.util.Pair;
import android.util.Slog;
@@ -34,7 +35,6 @@ import android.view.Display;
import android.view.DisplayAdjustments;
import java.lang.ref.WeakReference;
import java.util.Locale;
/** @hide */
public class ResourcesManager {
@@ -284,8 +284,9 @@ public class ResourcesManager {
}
// set it for java, this also affects newly created Resources
if (config.locale != null) {
Locale.setDefault(config.locale);
final LocaleList localeList = config.getLocales();
if (!localeList.isEmpty()) {
LocaleList.setDefault(localeList);
}
Resources.updateSystemConfiguration(config, defaultDisplayMetrics, compat);