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:
committed by
Roozbeh Pournader
parent
60965d2271
commit
cada57a57b
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user