From 714fe07ce3111f522881398d0784a1f316a5b603 Mon Sep 17 00:00:00 2001
From: 18034727885 <973609879@qq.com>
Date: 星期二, 28 四月 2026 16:46:35 +0800
Subject: [PATCH] 修复问题

---
 xldutils-kotlin/src/main/java/cn/sinata/xldutils/utils/LanguageUtil.java |   63 ++++++++++++++++---------------
 1 files changed, 32 insertions(+), 31 deletions(-)

diff --git a/xldutils-kotlin/src/main/java/cn/sinata/xldutils/utils/LanguageUtil.java b/xldutils-kotlin/src/main/java/cn/sinata/xldutils/utils/LanguageUtil.java
index 4dfd83e..c2244eb 100644
--- a/xldutils-kotlin/src/main/java/cn/sinata/xldutils/utils/LanguageUtil.java
+++ b/xldutils-kotlin/src/main/java/cn/sinata/xldutils/utils/LanguageUtil.java
@@ -1,8 +1,5 @@
 package cn.sinata.xldutils.utils;
 
-import static android.content.ContentValues.TAG;
-
-import android.annotation.TargetApi;
 import android.content.Context;
 import android.content.res.Configuration;
 import android.content.res.Resources;
@@ -10,60 +7,64 @@
 import android.os.LocaleList;
 import android.text.TextUtils;
 import android.util.DisplayMetrics;
-import android.util.Log;
 
 import java.util.Locale;
 
 public class LanguageUtil {
     public static Context attachBaseContext(Context context, String language, String country) {
-        Log.d(TAG, "attachBaseContext: "+ Build.VERSION.SDK_INT);
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
-            return updateResources(context, language,country);
-        } else {
-            return context;
-        }
-    }
-
-    @TargetApi(Build.VERSION_CODES.N)
-    private static Context updateResources(Context context, String language, String country) {
-        Resources resources = context.getResources();
         Locale locale = new Locale(language);
+        Locale.setDefault(locale);
+        Resources resources = context.getResources();
+        Configuration configuration = new Configuration(resources.getConfiguration());
 
-        Configuration configuration = resources.getConfiguration();
-        configuration.setLocale(locale);
-        configuration.setLocales(new LocaleList(locale));
-        return context.createConfigurationContext(configuration);
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
+            configuration.setLocale(locale);
+            LocaleList localeList = new LocaleList(locale);
+            LocaleList.setDefault(localeList);
+            configuration.setLocales(localeList);
+            return context.createConfigurationContext(configuration);
+        } else {
+            configuration.locale = locale;
+            resources.updateConfiguration(configuration, resources.getDisplayMetrics());
+        }
+
+        return context;
     }
 
     /**
      * @param context
      * @param newLanguage 想要切换的语言类型 比如 Const.Language.ENGLISH ,"zh"
      */
-    @SuppressWarnings("deprecation")
     public static void changeAppLanguage(Context context, String newLanguage, String country) {
         if (TextUtils.isEmpty(newLanguage)) {
             return;
         }
+        Locale locale = new Locale(newLanguage);
+        Locale.setDefault(locale);
         Resources resources = context.getResources();
-        Configuration configuration = resources.getConfiguration();
-        //获取想要切换的语言类型
-        Locale locale = new Locale(newLanguage,country);
-        configuration.setLocale(locale);
-        // updateConfiguration
-        DisplayMetrics dm = resources.getDisplayMetrics();
-        resources.updateConfiguration(configuration, dm);
+        Configuration configuration = new Configuration(resources.getConfiguration());
+
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
+            configuration.setLocale(locale);
+            LocaleList localeList = new LocaleList(locale);
+            LocaleList.setDefault(localeList);
+            configuration.setLocales(localeList);
+        } else {
+            configuration.locale = locale;
+            resources.updateConfiguration(configuration, resources.getDisplayMetrics());
+        }
     }
 
     /**
      * 如果是7.0以下,我们需要调用changeAppLanguage方法,
      * 如果是7.0及以上系统,直接把我们想要切换的语言类型保存在SharedPreferences中,然后重新启动MainActivity即可
      */
-    public static void setLanguage(String language,String country,Context appContext){
+    public static void setLanguage(String language, String country, Context appContext) {
         if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
-            changeAppLanguage(appContext, language,country);
+            changeAppLanguage(appContext, language, country);
         }
-        SPUtils.Companion.instance().put("language",language);
-        SPUtils.Companion.instance().put("country",country);
+        SPUtils.Companion.instance().put("language", language);
+        SPUtils.Companion.instance().put("country", country);
     }
 
 

--
Gitblit v1.7.1