From f35664f0ad753df3dc4ca3b47c2f91263973af34 Mon Sep 17 00:00:00 2001
From: 18034727885 <973609879@qq.com>
Date: 星期四, 09 七月 2026 13:54:51 +0800
Subject: [PATCH] 修复初始语言非法语的问题

---
 app/src/main/java/com/igo/user/ui/mine/adapter/TripOrderAdapter.kt                 |    4 
 app/src/main/java/com/igo/user/IGoApplication.kt                                   |   21 --
 xldutils-kotlin/src/main/java/cn/sinata/xldutils/activity/BaseActivity.kt          |    4 
 app/src/main/java/com/igo/user/ui/trip/MapTripFragment.kt                          |    6 
 app/src/main/java/com/igo/user/ui/mine/UserInfoActivity.kt                         |    6 
 app/src/main/java/com/igo/user/ui/trip/TripActivity.kt                             |    6 
 app/src/main/java/com/igo/user/ui/trip/OrderOtherActivity.kt                       |    4 
 app/src/main/java/com/igo/user/ui/trip/OrderDetailActivity.kt                      |    5 
 app/src/main/java/com/igo/user/ui/mine/ShareAppActivity.kt                         |    5 
 app/src/main/java/com/igo/user/network/RRetrofit.kt                                |  101 +++++++++-------
 app/src/main/java/com/igo/user/ui/mine/CommitGoodsActivity.kt                      |    8 
 app/src/main/java/com/igo/user/ui/trip/OrderDetailWithMapActivity.kt               |   13 +-
 xldutils-kotlin/src/main/java/cn/sinata/xldutils/rxutils/Error.kt                  |    8 
 xldutils-kotlin/src/main/java/cn/sinata/xldutils/rxutils/ResultCommonSubscriber.kt |    4 
 app/src/main/java/com/igo/user/ui/mine/LanguageActivity.kt                         |    4 
 app/src/main/java/com/igo/user/ui/trip/PriceDetailActivity.kt                      |    4 
 app/src/main/java/com/igo/user/network/Functions.kt                                |    3 
 app/src/main/java/com/igo/user/dialog/ChooseBirthEnglishDialog.kt                  |    4 
 app/src/main/java/com/igo/user/network/HttpManager.kt                              |   46 ++++++-
 app/src/main/res/layout/activity_login.xml                                         |    2 
 app/src/main/java/com/igo/user/ui/logistics/LogisticsGuideActivity.kt              |    4 
 app/src/main/java/com/igo/user/ui/trip/ChoosePositionActivity.kt                   |    4 
 app/src/main/java/com/igo/user/ui/mine/adapter/MyCouponAdapter.kt                  |    6 
 app/src/main/java/com/igo/user/dialog/ChooseReserveTimeDialog.kt                   |    4 
 xldutils-kotlin/src/main/java/cn/sinata/xldutils/utils/LanguageUtil.java           |   47 +++----
 app/src/main/java/com/igo/user/utils/google/AMapKit.kt                             |   14 +-
 26 files changed, 176 insertions(+), 161 deletions(-)

diff --git a/app/src/main/java/com/igo/user/IGoApplication.kt b/app/src/main/java/com/igo/user/IGoApplication.kt
index 43806b0..0bd4692 100644
--- a/app/src/main/java/com/igo/user/IGoApplication.kt
+++ b/app/src/main/java/com/igo/user/IGoApplication.kt
@@ -6,7 +6,6 @@
 import android.app.Application
 import android.content.Intent
 import android.os.Bundle
-import android.text.TextUtils
 import android.util.Log
 import androidx.appcompat.app.AppCompatActivity
 import androidx.core.os.bundleOf
@@ -18,6 +17,7 @@
 import cn.sinata.rxnetty.NettyClient
 import cn.sinata.xldutils.activity.BaseActivity
 import cn.sinata.xldutils.application.BaseApplication
+import cn.sinata.xldutils.utils.LanguageUtil
 import cn.sinata.xldutils.utils.SPUtils
 import cn.sinata.xldutils.utils.myToast
 import com.google.android.gms.maps.MapsInitializer
@@ -31,6 +31,7 @@
 import com.igo.user.interfaces.StringCallback
 import com.igo.user.network.Apis
 import com.igo.user.network.HttpManager
+import com.igo.user.network.RRetrofit
 import com.igo.user.network.entity.TrippingInfo
 import com.igo.user.network.request
 import com.igo.user.ui.MainActivity
@@ -59,7 +60,7 @@
         appContext = this
         // initializeRecaptchaClient()
         registerActivityLifecycleCallbacks(this)
-        setDefaultLanguage()
+        LanguageUtil.setDefaultLanguage(Const.Language.DEFAULT_LANGUAGE)
         DownloadLibrary.init(
             this,
             resources.getIdentifier("ic_launcher", "mipmap", packageName),
@@ -78,14 +79,6 @@
         ) { renderer ->
             Log.e(Const.GoogleTag, "LATEST renderer:${renderer.name}")
 //            initializeConsumerSdk()
-        }
-    }
-
-    //设置默认语言
-    private fun setDefaultLanguage() {
-        val language = SPUtils.instance().getString("language")
-        if (TextUtils.isEmpty(language)) {
-            SPUtils.instance().put("language", Const.Language.DEFAULT_LANGUAGE).apply()
         }
     }
 
@@ -385,12 +378,8 @@
         val userId = SPUtils.instance().getInt(Const.User.USER_ID)
         val token = SPUtils.instance().getString(Const.User.TOKEN)
         if (userId != -1) {
-            val language = SPUtils.instance().getString("language")
-            val l = when (language) {
-                Const.Language.CHINESE -> "1"
-                Const.Language.FRENCH -> "3"
-                else -> "2"
-            }
+            val language = LanguageUtil.getLanguage()
+            val l = RRetrofit.getLanguageType(language)
             NettyClient.getInstance()
                 .sendMessage("{\"data\":{\"userId\":$userId,\"language\":$l,\"token\":\"$token\",\"type\":1},\"method\":\"PING\",\"code\":200,\"msg\":\"SUCCESS\"}")
         }
diff --git a/app/src/main/java/com/igo/user/dialog/ChooseBirthEnglishDialog.kt b/app/src/main/java/com/igo/user/dialog/ChooseBirthEnglishDialog.kt
index 5f65fea..d1df505 100644
--- a/app/src/main/java/com/igo/user/dialog/ChooseBirthEnglishDialog.kt
+++ b/app/src/main/java/com/igo/user/dialog/ChooseBirthEnglishDialog.kt
@@ -7,7 +7,7 @@
 import android.view.ViewGroup
 import androidx.fragment.app.DialogFragment
 import cn.sinata.xldutils.gone
-import cn.sinata.xldutils.utils.SPUtils
+import cn.sinata.xldutils.utils.LanguageUtil
 import cn.sinata.xldutils.view.WheelView
 import com.igo.user.R
 import com.igo.user.utils.Const
@@ -23,7 +23,7 @@
     private val wv_2 by lazy { find<WheelView>(R.id.wv_2) }
     private val wv_3 by lazy { find<WheelView>(R.id.wv_3) }
 
-    private val language by lazy { SPUtils.instance().getString("language") }
+    private val language by lazy { LanguageUtil.getLanguage() }
 
     override fun onCreateView(
         inflater: LayoutInflater,
diff --git a/app/src/main/java/com/igo/user/dialog/ChooseReserveTimeDialog.kt b/app/src/main/java/com/igo/user/dialog/ChooseReserveTimeDialog.kt
index bf2cacd..f5946df 100644
--- a/app/src/main/java/com/igo/user/dialog/ChooseReserveTimeDialog.kt
+++ b/app/src/main/java/com/igo/user/dialog/ChooseReserveTimeDialog.kt
@@ -8,7 +8,7 @@
 import android.widget.TextView
 import androidx.fragment.app.DialogFragment
 import cn.sinata.xldutils.gone
-import cn.sinata.xldutils.utils.SPUtils
+import cn.sinata.xldutils.utils.LanguageUtil
 import cn.sinata.xldutils.utils.toTime
 import cn.sinata.xldutils.utils.toTimeEnglish
 import cn.sinata.xldutils.utils.toTimeFrench
@@ -40,7 +40,7 @@
     private val tv_title by lazy { find<TextView>(R.id.tv_title) }
 
     private val language by lazy {
-        SPUtils.instance().getString("language")
+        LanguageUtil.getLanguage()
     }
 
     private val dayTimes = arrayListOf<Long>()
diff --git a/app/src/main/java/com/igo/user/network/Functions.kt b/app/src/main/java/com/igo/user/network/Functions.kt
index 57f54a2..6d367de 100644
--- a/app/src/main/java/com/igo/user/network/Functions.kt
+++ b/app/src/main/java/com/igo/user/network/Functions.kt
@@ -6,6 +6,7 @@
 import cn.sinata.xldutils.defaultScheduler
 import cn.sinata.xldutils.fragment.BaseFragment
 import cn.sinata.xldutils.rxutils.ResultDataSubscriber
+import cn.sinata.xldutils.utils.LanguageUtil
 import cn.sinata.xldutils.utils.SPUtils
 import com.igo.user.utils.Const
 import io.reactivex.Flowable
@@ -35,7 +36,7 @@
             activity.dismissDialog()
             if (code == 600) {//token无效
                 super.onError(
-                    code, when (SPUtils.instance().getString("language")) {
+                    code, when (LanguageUtil.getLanguage()) {
                         Const.Language.CHINESE -> "您的身份已过期,请重新登录"
                         Const.Language.FRENCH -> "Votre identité a expiré, veuillez vous reconnecter"
                         else -> "Your identity has expired, please log in again"
diff --git a/app/src/main/java/com/igo/user/network/HttpManager.kt b/app/src/main/java/com/igo/user/network/HttpManager.kt
index b1e8fa5..d3bae1a 100644
--- a/app/src/main/java/com/igo/user/network/HttpManager.kt
+++ b/app/src/main/java/com/igo/user/network/HttpManager.kt
@@ -1,12 +1,45 @@
 package com.igo.user.network
 
 import cn.sinata.xldutils.data.ResultData
+import cn.sinata.xldutils.utils.LanguageUtil
 import cn.sinata.xldutils.utils.SPUtils
 import com.google.gson.JsonObject
 import com.igo.user.IGoApplication
 import com.igo.user.data.HomeDatas
-import com.igo.user.network.entity.*
+import com.igo.user.network.entity.Anchor
+import com.igo.user.network.entity.AutoCompleteBean
+import com.igo.user.network.entity.CarPrice
+import com.igo.user.network.entity.City
+import com.igo.user.network.entity.Coupon
+import com.igo.user.network.entity.DriverInfo
+import com.igo.user.network.entity.EmailBean
+import com.igo.user.network.entity.Evaluation
 import com.igo.user.network.entity.Function
+import com.igo.user.network.entity.GeoBean
+import com.igo.user.network.entity.Goods
+import com.igo.user.network.entity.GoogleToken
+import com.igo.user.network.entity.InviteHis
+import com.igo.user.network.entity.InvokeHis
+import com.igo.user.network.entity.Line
+import com.igo.user.network.entity.LogisticProgress
+import com.igo.user.network.entity.Message
+import com.igo.user.network.entity.MyBankCard
+import com.igo.user.network.entity.OpenCity
+import com.igo.user.network.entity.Order
+import com.igo.user.network.entity.Phone
+import com.igo.user.network.entity.PlaceDetailBean
+import com.igo.user.network.entity.Point
+import com.igo.user.network.entity.RealName
+import com.igo.user.network.entity.RouteBean
+import com.igo.user.network.entity.SearchBean
+import com.igo.user.network.entity.SeatInfo
+import com.igo.user.network.entity.ServiceRecord
+import com.igo.user.network.entity.Shift
+import com.igo.user.network.entity.TrippingInfo
+import com.igo.user.network.entity.UserInfo
+import com.igo.user.network.entity.VersionData
+import com.igo.user.network.entity.WalletRecord
+import com.igo.user.network.entity.WalletRecordBean
 import com.igo.user.utils.Const
 import io.reactivex.Flowable
 import okhttp3.MediaType
@@ -28,8 +61,7 @@
      * @param type 1:隐私协议,2:用户协议,3:用户指南,4:法律条款,5:关于我们
      */
     fun getH5(type: Int, language: String? = null): Flowable<ResultData<JsonObject>> {
-        val language =
-            language ?: SPUtils.instance().getString("language", Const.Language.DEFAULT_LANGUAGE)
+        val language = language ?: LanguageUtil.getLanguage()
         return request().getH5(language,type)
     }
 
@@ -1245,7 +1277,7 @@
      */
     fun geoCode(lat:Double,lon: Double): Flowable<GeoBean> {
         //1=简体中文,2=英语,3=法语
-        val language = SPUtils.instance().getString("language")
+        val language = LanguageUtil.getLanguage()
         val lan = if (language == Const.Language.CHINESE) "zh-CN" else language
         return request().geoCode(IGoApplication.tripId,"${lat},${lon}",lan)
     }
@@ -1255,7 +1287,7 @@
      */
     fun textsearch(key:String,lat: Double,lon: Double): Flowable<SearchBean> {
         //1=简体中文,2=英语,3=法语
-        val language = SPUtils.instance().getString("language")
+        val language = LanguageUtil.getLanguage()
         val lan = if (language == Const.Language.CHINESE) "zh-CN" else language
         return request().textsearch(IGoApplication.tripId,key,"${lat},${lon}",lan)
 //        return request().textsearch(key,5.586363,-0.187788,IGoApplication.chooseCityName,lan)  //阿克拉 5.586363,-0.187788
@@ -1266,7 +1298,7 @@
      */
     fun autocomplete(key:String,country:String = "gh"): Flowable<AutoCompleteBean> {
         //1=简体中文,2=英语,3=法语
-        val language = SPUtils.instance().getString("language")
+        val language = LanguageUtil.getLanguage()
         val lan = if (language == Const.Language.CHINESE) "zh-CN" else language
         return request().autocomplete(IGoApplication.tripId,key,lan,"country:$country")
     }
@@ -1282,7 +1314,7 @@
      * 路线
      */
     fun directions(startLat: Double,startLon: Double,endLat: Double,endLon: Double): Flowable<RouteBean> {
-        val language = SPUtils.instance().getString("language")
+        val language = LanguageUtil.getLanguage()
         val lan = if (language == Const.Language.CHINESE) "zh-CN" else language
         return request().directions(IGoApplication.tripId,"${startLat},${startLon}","${endLat},${endLon}",lan)
     }
diff --git a/app/src/main/java/com/igo/user/network/RRetrofit.kt b/app/src/main/java/com/igo/user/network/RRetrofit.kt
index df016e2..82639c1 100644
--- a/app/src/main/java/com/igo/user/network/RRetrofit.kt
+++ b/app/src/main/java/com/igo/user/network/RRetrofit.kt
@@ -1,6 +1,7 @@
 package com.igo.user.network
 
 import android.util.Log
+import cn.sinata.xldutils.utils.LanguageUtil
 import cn.sinata.xldutils.utils.SPUtils
 import com.igo.user.BuildConfig
 import com.igo.user.utils.Const
@@ -17,63 +18,71 @@
 
     private val loggingInterceptor by lazy {
         LoggingInterceptor().apply {
-            level = if (BuildConfig.DEBUG) LoggingInterceptor.Level.BODY else LoggingInterceptor.Level.NONE
+            level =
+                if (BuildConfig.DEBUG) LoggingInterceptor.Level.BODY else LoggingInterceptor.Level.NONE
         }
     }
 
     private val retrofit: Retrofit = Retrofit.Builder()
-            .baseUrl(Apis.BASE_URL)
-            .addConverterFactory(JsonConverterFactory.create())
-            .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
-            .client(OkHttpClient.Builder()
-                    .addInterceptor(HttpLoggingInterceptor().apply {
-                        level = HttpLoggingInterceptor.Level.BODY
-                    })
-                .addInterceptor { chain ->
-                    var request = chain.request()
-                    if (request.method() == "POST"&&!request.url().toString().contains("base/user/image")) {
-                        val bodyBuilder = FormBody.Builder()
-                        var formBody:FormBody
-                        if (request.body() is FormBody) {
-                            formBody = request.body() as FormBody
-                            (0 until formBody.size()).forEach {
-                                bodyBuilder.addEncoded(
-                                    formBody.encodedName(it), formBody.encodedValue(
-                                        it
-                                    )
+        .baseUrl(Apis.BASE_URL)
+        .addConverterFactory(JsonConverterFactory.create())
+        .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
+        .client(
+            OkHttpClient.Builder()
+            .addInterceptor(HttpLoggingInterceptor().apply {
+                level = HttpLoggingInterceptor.Level.BODY
+            })
+            .addInterceptor { chain ->
+                var request = chain.request()
+                if (request.method() == "POST" && !request.url().toString()
+                        .contains("base/user/image")
+                ) {
+                    val bodyBuilder = FormBody.Builder()
+                    var formBody: FormBody
+                    if (request.body() is FormBody) {
+                        formBody = request.body() as FormBody
+                        (0 until formBody.size()).forEach {
+                            bodyBuilder.addEncoded(
+                                formBody.encodedName(it), formBody.encodedValue(
+                                    it
                                 )
-                            }
-                        }
-                        if (request.header("language").isNullOrEmpty()) {
-                            //1=简体中文,2=英语,3=印尼语
-                            val language = SPUtils.instance()
-                                .getString("language", Const.Language.DEFAULT_LANGUAGE)
-                            formBody = bodyBuilder.addEncoded(
-                                "language", when (language) {
-                                    Const.Language.CHINESE -> "1"
-                                    Const.Language.FRENCH -> "3"
-                                    else -> "2"
-                                }
-                            ).build()
-                            request = request.newBuilder().post(formBody).build()
+                            )
                         }
                     }
-                    chain.proceed(request)
+                    var language = request.header("language")
+                    language = if (language.isNullOrEmpty()) {
+                        LanguageUtil.getLanguage()!!
+                    } else {
+                        language
+                    }
+                    //1=简体中文,2=英语,3=法语
+                    formBody = bodyBuilder.addEncoded("language", getLanguageType(language)).build()
+                    request = request.newBuilder().post(formBody).build()
                 }
-                .addInterceptor { chain ->
-                    val token = SPUtils.instance().getString(Const.User.TOKEN)
-                    val request =
-                        if (token.isEmpty()) chain.request() else
-                            chain.request().newBuilder().addHeader("Authorization", "Bearer $token").build()
-                    Log.e(Const.Tag,request.headers().toString())
-                    chain.proceed(request)
-                }
-                .addInterceptor(loggingInterceptor)
-                .build())
-            .build()
+                chain.proceed(request)
+            }
+            .addInterceptor { chain ->
+                val token = SPUtils.instance().getString(Const.User.TOKEN)
+                val request =
+                    if (token.isEmpty()) chain.request() else
+                        chain.request().newBuilder().addHeader("Authorization", "Bearer $token")
+                            .build()
+                Log.e(Const.Tag, request.headers().toString())
+                chain.proceed(request)
+            }
+            .addInterceptor(loggingInterceptor)
+            .build())
+        .build()
 
     companion object {
         fun instance() = RRetrofit()
+        fun getLanguageType(language: String): String {
+            return when (language) {
+                Const.Language.CHINESE -> "1"
+                Const.Language.FRENCH -> "3"
+                else -> "2"
+            }
+        }
     }
 
     fun <T> create(clazz: Class<T>): T = retrofit.create(clazz)
diff --git a/app/src/main/java/com/igo/user/ui/logistics/LogisticsGuideActivity.kt b/app/src/main/java/com/igo/user/ui/logistics/LogisticsGuideActivity.kt
index 3bfee00..dde1f9e 100644
--- a/app/src/main/java/com/igo/user/ui/logistics/LogisticsGuideActivity.kt
+++ b/app/src/main/java/com/igo/user/ui/logistics/LogisticsGuideActivity.kt
@@ -9,7 +9,7 @@
 import android.widget.TextView
 import androidx.core.os.bundleOf
 import cn.sinata.xldutils.toBrowser
-import cn.sinata.xldutils.utils.SPUtils
+import cn.sinata.xldutils.utils.LanguageUtil
 import cn.sinata.xldutils.utils.myToast
 import cn.sinata.xldutils.utils.optDouble
 import cn.sinata.xldutils.utils.optInt
@@ -93,7 +93,7 @@
 
     override fun initView() {
         title = getString(R.string.邮寄快件指南)
-        if (SPUtils.instance().getString("language") == Const.Language.FRENCH) { //解决法文标题过长问题
+        if (LanguageUtil.getLanguage() == Const.Language.FRENCH) { //解决法文标题过长问题
             titleBar.titleView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 12f)
         }
         PayUtil.addPayListener(this)
diff --git a/app/src/main/java/com/igo/user/ui/mine/CommitGoodsActivity.kt b/app/src/main/java/com/igo/user/ui/mine/CommitGoodsActivity.kt
index d9a78a9..1d098eb 100644
--- a/app/src/main/java/com/igo/user/ui/mine/CommitGoodsActivity.kt
+++ b/app/src/main/java/com/igo/user/ui/mine/CommitGoodsActivity.kt
@@ -6,7 +6,7 @@
 import android.widget.EditText
 import android.widget.TextView
 import androidx.core.os.bundleOf
-import cn.sinata.xldutils.utils.SPUtils
+import cn.sinata.xldutils.utils.LanguageUtil
 import cn.sinata.xldutils.utils.isValidPhone
 import cn.sinata.xldutils.utils.myToast
 import com.igo.user.R
@@ -53,7 +53,7 @@
             else{
                 val strings = arrayListOf<String>()
                 val dialog = SingleWheelDialog()
-                val language = SPUtils.instance().getString("language")
+                val language = LanguageUtil.getLanguage()
                 strings.addAll(province.map { if (language == Const.Language.ENGLISH) it.englishName else if (language == Const.Language.FRENCH) it.frenchName else it.chineseName })
                 dialog.arguments = bundleOf("data" to strings,"title" to getString(R.string.选择地区))
                 dialog.setCallback(object :StringCallback{
@@ -133,7 +133,7 @@
             province.clear()
             province.addAll(data ?: arrayListOf())
             val strings = arrayListOf<String>()
-            val language = SPUtils.instance().getString("language")
+            val language = LanguageUtil.getLanguage()
             strings.addAll(province.map { if (language == Const.Language.ENGLISH) it.englishName else if (language == Const.Language.FRENCH) it.frenchName else it.chineseName })
             val dialog = SingleWheelDialog()
             dialog.arguments = bundleOf("data" to strings, "title" to getString(R.string.选择地区))
@@ -151,7 +151,7 @@
         et_name.filters = arrayOf(RealNameInputFilter())
         et_city.filters = arrayOf(RealNameInputFilter())
         et_district.filters = arrayOf(RealNameInputFilter())
-        val language = SPUtils.instance().getString("language")
+        val language = LanguageUtil.getLanguage()
         et_name.setTextSize(TypedValue.COMPLEX_UNIT_SP,if (language == Const.Language.CHINESE) 14f else 11f)
         et_phone.setTextSize(TypedValue.COMPLEX_UNIT_SP,if (language == Const.Language.CHINESE) 14f else 11f)
     }
diff --git a/app/src/main/java/com/igo/user/ui/mine/LanguageActivity.kt b/app/src/main/java/com/igo/user/ui/mine/LanguageActivity.kt
index c5ae217..8592fb1 100644
--- a/app/src/main/java/com/igo/user/ui/mine/LanguageActivity.kt
+++ b/app/src/main/java/com/igo/user/ui/mine/LanguageActivity.kt
@@ -3,7 +3,6 @@
 import android.widget.TextView
 import androidx.core.os.bundleOf
 import cn.sinata.xldutils.utils.LanguageUtil
-import cn.sinata.xldutils.utils.SPUtils
 import com.igo.user.IGoApplication
 import com.igo.user.R
 import com.igo.user.dialog.TipDialog
@@ -37,8 +36,7 @@
         tipDialog.arguments = bundleOf("msg" to getString(R.string.确定切换语言吗))
         tipDialog.setCallback(object :TipDialog.OnClickCallback{
             override fun onOk() {
-                SPUtils.instance().put("language",language).apply()
-                LanguageUtil.changeAppLanguage(this@LanguageActivity,language,"")
+                LanguageUtil.saveLanguage(this@LanguageActivity,language)
                 IGoApplication.appContext?.reLaunch()
             }
 
diff --git a/app/src/main/java/com/igo/user/ui/mine/ShareAppActivity.kt b/app/src/main/java/com/igo/user/ui/mine/ShareAppActivity.kt
index f74431a..7fc0b6c 100644
--- a/app/src/main/java/com/igo/user/ui/mine/ShareAppActivity.kt
+++ b/app/src/main/java/com/igo/user/ui/mine/ShareAppActivity.kt
@@ -6,6 +6,7 @@
 import android.webkit.WebViewClient
 import android.widget.ImageView
 import android.widget.TextView
+import cn.sinata.xldutils.utils.LanguageUtil
 import cn.sinata.xldutils.utils.SPUtils
 import cn.sinata.xldutils.utils.optString
 import com.igo.user.R
@@ -35,7 +36,7 @@
             val shareDialog = ShareDialog()
             shareDialog.setCallback(object : ShareDialog.Callback {
                 override fun onOk(way: Int) {
-                    val language = SPUtils.instance().getString("language")
+                    val language = LanguageUtil.getLanguage()
                     val languageP = if (language == Const.Language.CHINESE) 1 else if (language == Const.Language.ENGLISH) 2 else 3
                     val url = String.format(
                         Apis.SHARE_URL,
@@ -110,7 +111,7 @@
                 webView.loadData(it.optString("content"), "text/html; charset=utf-8", "utf-8")
             }
         }
-        val language = SPUtils.instance().getString("language")
+        val language = LanguageUtil.getLanguage()
         iv_bg.imageResource = when (language) {
             Const.Language.CHINESE -> R.mipmap.share_bg
             Const.Language.FRENCH -> R.mipmap.share_bg_fr
diff --git a/app/src/main/java/com/igo/user/ui/mine/UserInfoActivity.kt b/app/src/main/java/com/igo/user/ui/mine/UserInfoActivity.kt
index 438ff84..35ac023 100644
--- a/app/src/main/java/com/igo/user/ui/mine/UserInfoActivity.kt
+++ b/app/src/main/java/com/igo/user/ui/mine/UserInfoActivity.kt
@@ -6,10 +6,8 @@
 import android.util.Log
 import android.widget.TextView
 import androidx.core.os.bundleOf
-import cn.sinata.xldutils.activity.SelectPhotoDialog
-import cn.sinata.xldutils.utils.SPUtils
+import cn.sinata.xldutils.utils.LanguageUtil
 import com.facebook.drawee.view.SimpleDraweeView
-import com.google.android.datatransport.cct.internal.LogEvent
 import com.igo.user.R
 import com.igo.user.dialog.ChooseBirthDialog
 import com.igo.user.dialog.ChooseBirthEnglishDialog
@@ -77,7 +75,7 @@
             singleWheelDialog.show(supportFragmentManager, "sex")
         }
         tv_birth.setOnClickListener {
-            val language = SPUtils.instance().getString("language")
+            val language = LanguageUtil.getLanguage()
             if (language == Const.Language.ENGLISH || language == Const.Language.FRENCH) {
                 val chooseBirthDialog = ChooseBirthEnglishDialog()
                 chooseBirthDialog.setCallback(object : ChooseBirthEnglishDialog.Callback {
diff --git a/app/src/main/java/com/igo/user/ui/mine/adapter/MyCouponAdapter.kt b/app/src/main/java/com/igo/user/ui/mine/adapter/MyCouponAdapter.kt
index b6ede16..a0413e0 100644
--- a/app/src/main/java/com/igo/user/ui/mine/adapter/MyCouponAdapter.kt
+++ b/app/src/main/java/com/igo/user/ui/mine/adapter/MyCouponAdapter.kt
@@ -6,7 +6,7 @@
 import cn.sinata.xldutils.adapter.HFRecyclerAdapter
 import cn.sinata.xldutils.adapter.util.ViewHolder
 import cn.sinata.xldutils.invisible
-import cn.sinata.xldutils.utils.SPUtils
+import cn.sinata.xldutils.utils.LanguageUtil
 import cn.sinata.xldutils.visible
 import com.daimajia.swipe.SwipeLayout
 import com.igo.user.R
@@ -39,7 +39,7 @@
     }
 
     fun getUsedRes():Int{
-        val language = SPUtils.instance().getString("language")
+        val language = LanguageUtil.getLanguage()
         return when(language){
             Const.Language.CHINESE-> R.mipmap.used
             Const.Language.FRENCH->R.mipmap.used_f
@@ -48,7 +48,7 @@
     }
 
     fun getExpiredRes():Int{
-        val language = SPUtils.instance().getString("language")
+        val language = LanguageUtil.getLanguage()
         return when(language){
             Const.Language.CHINESE-> R.mipmap.passd
             Const.Language.FRENCH->R.mipmap.passd_f
diff --git a/app/src/main/java/com/igo/user/ui/mine/adapter/TripOrderAdapter.kt b/app/src/main/java/com/igo/user/ui/mine/adapter/TripOrderAdapter.kt
index 103b92d..71ad1a9 100644
--- a/app/src/main/java/com/igo/user/ui/mine/adapter/TripOrderAdapter.kt
+++ b/app/src/main/java/com/igo/user/ui/mine/adapter/TripOrderAdapter.kt
@@ -6,7 +6,7 @@
 import cn.sinata.xldutils.adapter.HFRecyclerAdapter
 import cn.sinata.xldutils.adapter.util.ViewHolder
 import cn.sinata.xldutils.gone
-import cn.sinata.xldutils.utils.SPUtils
+import cn.sinata.xldutils.utils.LanguageUtil
 import cn.sinata.xldutils.visible
 import com.igo.user.R
 import com.igo.user.network.entity.Order
@@ -32,7 +32,7 @@
         if (data.isFrozen == 2){
             clMain.alpha = 0.5f
             frozen.visible()
-            val language = SPUtils.instance().getString("language")
+            val language = LanguageUtil.getLanguage()
             val ic = when(language){
                 Const.Language.ENGLISH->R.mipmap.yidongjie_e
                 Const.Language.CHINESE->R.mipmap.yidongjie
diff --git a/app/src/main/java/com/igo/user/ui/trip/ChoosePositionActivity.kt b/app/src/main/java/com/igo/user/ui/trip/ChoosePositionActivity.kt
index c53ed9a..7a57b47 100644
--- a/app/src/main/java/com/igo/user/ui/trip/ChoosePositionActivity.kt
+++ b/app/src/main/java/com/igo/user/ui/trip/ChoosePositionActivity.kt
@@ -12,7 +12,7 @@
 import cn.sinata.xldutils.gone
 import cn.sinata.xldutils.rxutils.ResultException
 import cn.sinata.xldutils.sysErr
-import cn.sinata.xldutils.utils.SPUtils
+import cn.sinata.xldutils.utils.LanguageUtil
 import cn.sinata.xldutils.view.SwipeRefreshRecyclerLayout
 import cn.sinata.xldutils.visible
 import com.igo.user.IGoApplication
@@ -127,7 +127,7 @@
         lv_position.setMode(SwipeRefreshRecyclerLayout.Mode.None)
         lv_position.setLayoutManager(LinearLayoutManager(this, LinearLayoutManager.VERTICAL,false))
         title = if (isLogistics) getString(if (isStart) R.string.设置领取点 else R.string.设置目的地) else if(isModify) getString(R.string.设置目的地) else if(isStart){
-            if (SPUtils.instance().getString("language") == Const.Language.FRENCH){ //解决法文标题过长问题
+            if (LanguageUtil.getLanguage() == Const.Language.FRENCH){ //解决法文标题过长问题
                 titleBar.titleView.setTextSize(TypedValue.COMPLEX_UNIT_SP,12f)
             }
             getString(R.string.设置上车点)
diff --git a/app/src/main/java/com/igo/user/ui/trip/MapTripFragment.kt b/app/src/main/java/com/igo/user/ui/trip/MapTripFragment.kt
index bca6b6d..65949e0 100644
--- a/app/src/main/java/com/igo/user/ui/trip/MapTripFragment.kt
+++ b/app/src/main/java/com/igo/user/ui/trip/MapTripFragment.kt
@@ -27,7 +27,7 @@
 import cn.sinata.xldutils.fragment.BaseFragment
 import cn.sinata.xldutils.gone
 import cn.sinata.xldutils.invisible
-import cn.sinata.xldutils.utils.SPUtils
+import cn.sinata.xldutils.utils.LanguageUtil
 import cn.sinata.xldutils.utils.SpanBuilder
 import cn.sinata.xldutils.utils.myToast
 import cn.sinata.xldutils.utils.optBoolean
@@ -173,7 +173,7 @@
     //是否循环刷新
     private var hadLoopRefresh = false
     override fun onFirstVisibleToUser() {
-        val language = SPUtils.instance().getString("language")
+        val language = LanguageUtil.getLanguage()
         tv_110.setCompoundDrawablesRelativeWithIntrinsicBounds(
             0,
             if (language == Const.Language.CHINESE) R.mipmap.icon_110 else R.mipmap.icon_191,
@@ -1114,7 +1114,7 @@
     private fun setMarker(latLon: LatLng, content: String = "") {
         val options = MarkerOptions()
         options.position(latLon)
-        val language = SPUtils.instance().getString("language")
+        val language = LanguageUtil.getLanguage()
         if (content.isNotEmpty()) {
             val ic = when (language) {
                 Const.Language.ENGLISH -> R.mipmap.end_point_e
diff --git a/app/src/main/java/com/igo/user/ui/trip/OrderDetailActivity.kt b/app/src/main/java/com/igo/user/ui/trip/OrderDetailActivity.kt
index d13aa06..87a2a7d 100644
--- a/app/src/main/java/com/igo/user/ui/trip/OrderDetailActivity.kt
+++ b/app/src/main/java/com/igo/user/ui/trip/OrderDetailActivity.kt
@@ -20,6 +20,7 @@
 import cn.sinata.xldutils.hide
 import cn.sinata.xldutils.invisible
 import cn.sinata.xldutils.toBrowser
+import cn.sinata.xldutils.utils.LanguageUtil
 import cn.sinata.xldutils.utils.SPUtils
 import cn.sinata.xldutils.utils.SpanBuilder
 import cn.sinata.xldutils.utils.myToast
@@ -296,7 +297,7 @@
                 }
                 if (order!!.isFrozen == 2) {
                     tv_frozen.visible()
-                    val language = SPUtils.instance().getString("language")
+                    val language = LanguageUtil.getLanguage()
                     val ic = when (language) {
                         Const.Language.ENGLISH -> R.mipmap.yidongjie_e
                         Const.Language.CHINESE -> R.mipmap.yidongjie
@@ -334,7 +335,7 @@
                             val shareDialog = ShareDialog()
                             shareDialog.setCallback(object : ShareDialog.Callback {
                                 override fun onOk(way: Int) { //0:wx 1:qq 2:msg
-                                    val language = SPUtils.instance().getString("language")
+                                    val language = LanguageUtil.getLanguage()
                                     val languageP =
                                         if (language == Const.Language.CHINESE) 1 else if (language == Const.Language.ENGLISH) 2 else 3
                                     val url = String.format(
diff --git a/app/src/main/java/com/igo/user/ui/trip/OrderDetailWithMapActivity.kt b/app/src/main/java/com/igo/user/ui/trip/OrderDetailWithMapActivity.kt
index 7b2dd91..1cffebf 100644
--- a/app/src/main/java/com/igo/user/ui/trip/OrderDetailWithMapActivity.kt
+++ b/app/src/main/java/com/igo/user/ui/trip/OrderDetailWithMapActivity.kt
@@ -1,14 +1,16 @@
 package com.igo.user.ui.trip
 
+//import com.share.utils.ShareUtils
+//import com.umeng.socialize.UMShareListener
+//import com.umeng.socialize.bean.SHARE_MEDIA
 import android.app.Activity
 import android.graphics.Color
-import android.view.View
 import android.widget.CheckBox
 import android.widget.TextView
 import androidx.core.os.bundleOf
 import cn.sinata.xldutils.gone
 import cn.sinata.xldutils.invisible
-import cn.sinata.xldutils.toBrowser
+import cn.sinata.xldutils.utils.LanguageUtil
 import cn.sinata.xldutils.utils.SPUtils
 import cn.sinata.xldutils.utils.myToast
 import cn.sinata.xldutils.utils.optDouble
@@ -39,9 +41,6 @@
 import com.igo.user.utils.showMoney
 import com.igo.user.views.CenterFlowLayout
 import com.igo.user.views.RatingBar
-//import com.share.utils.ShareUtils
-//import com.umeng.socialize.UMShareListener
-//import com.umeng.socialize.bean.SHARE_MEDIA
 import org.jetbrains.anko.find
 import org.jetbrains.anko.sdk27.coroutines.onClick
 import org.jetbrains.anko.startActivity
@@ -249,7 +248,7 @@
      * @param isStart true:起点标记 false:终点标记
      */
     private fun setMarker(latLon: LatLng, isStart:Boolean = true) {
-        val language = SPUtils.instance().getString("language")
+        val language = LanguageUtil.getLanguage()
 
         if (isStart){
             val ic = when(language){
@@ -289,7 +288,7 @@
                             val shareDialog = ShareDialog()
                             shareDialog.setCallback(object :ShareDialog.Callback{
                                 override fun onOk(way: Int) { //0:wx 1:qq 2:msg
-                                    val language = SPUtils.instance().getString("language")
+                                    val language = LanguageUtil.getLanguage()
                                     val languageP = if (language == Const.Language.CHINESE) 1 else if (language == Const.Language.ENGLISH) 2 else 3
                                     val url = String.format(Apis.SHARE_URL, languageP, languageP,SPUtils.instance().getInt(Const.User.USER_ID))
                                     if (way == 3)
diff --git a/app/src/main/java/com/igo/user/ui/trip/OrderOtherActivity.kt b/app/src/main/java/com/igo/user/ui/trip/OrderOtherActivity.kt
index a7c47ba..5870abd 100644
--- a/app/src/main/java/com/igo/user/ui/trip/OrderOtherActivity.kt
+++ b/app/src/main/java/com/igo/user/ui/trip/OrderOtherActivity.kt
@@ -11,7 +11,7 @@
 import android.view.View
 import android.widget.EditText
 import android.widget.TextView
-import cn.sinata.xldutils.utils.SPUtils
+import cn.sinata.xldutils.utils.LanguageUtil
 import cn.sinata.xldutils.utils.myToast
 import cn.sinata.xldutils.utils.optString
 import com.igo.user.R
@@ -78,7 +78,7 @@
             }
         }
 
-        val language = SPUtils.instance().getString("language")
+        val language = LanguageUtil.getLanguage()
         if (language == Const.Language.CHINESE){
             tv_tip.gravity = Gravity.CENTER
             tv_rule.typeface = Typeface.DEFAULT
diff --git a/app/src/main/java/com/igo/user/ui/trip/PriceDetailActivity.kt b/app/src/main/java/com/igo/user/ui/trip/PriceDetailActivity.kt
index c01b876..b5f6ab0 100644
--- a/app/src/main/java/com/igo/user/ui/trip/PriceDetailActivity.kt
+++ b/app/src/main/java/com/igo/user/ui/trip/PriceDetailActivity.kt
@@ -6,7 +6,7 @@
 import androidx.recyclerview.widget.LinearLayoutManager
 import androidx.recyclerview.widget.RecyclerView
 import cn.sinata.xldutils.gone
-import cn.sinata.xldutils.utils.SPUtils
+import cn.sinata.xldutils.utils.LanguageUtil
 import cn.sinata.xldutils.visible
 import com.igo.user.R
 import com.igo.user.network.entity.Order
@@ -138,7 +138,7 @@
                 val tv_name1 = view1.find<TextView>(R.id.tv_name)
                 val tv_price1 = view1.find<TextView>(R.id.tv_price)
                 tv_name1.text = getString(R.string.活动折扣)
-                val language = SPUtils.instance().getString("language")
+                val language = LanguageUtil.getLanguage()
                 tv_price1.text = when(language){
                     Const.Language.ENGLISH->"${100-(order.discount*10).toInt()}%"
                     Const.Language.CHINESE->"${order.discount}折"
diff --git a/app/src/main/java/com/igo/user/ui/trip/TripActivity.kt b/app/src/main/java/com/igo/user/ui/trip/TripActivity.kt
index d0f42bb..f34910b 100644
--- a/app/src/main/java/com/igo/user/ui/trip/TripActivity.kt
+++ b/app/src/main/java/com/igo/user/ui/trip/TripActivity.kt
@@ -27,7 +27,7 @@
 import cn.sinata.xldutils.activity.BaseActivity
 import cn.sinata.xldutils.callPhone
 import cn.sinata.xldutils.gone
-import cn.sinata.xldutils.utils.SPUtils
+import cn.sinata.xldutils.utils.LanguageUtil
 import cn.sinata.xldutils.utils.SpanBuilder
 import cn.sinata.xldutils.utils.myToast
 import cn.sinata.xldutils.utils.parserTime
@@ -238,7 +238,7 @@
             shareDialog.arguments = bundleOf("isTrip" to true)
             shareDialog.setCallback(object :ShareDialog.Callback{
                 override fun onOk(way: Int) {
-                    val language = SPUtils.instance().getString("language")
+                    val language = LanguageUtil.getLanguage()
                     val languageP = if (language == Const.Language.CHINESE) 1 else if(language == Const.Language.FRENCH) 3 else 2
                     val url = String.format(Apis.TRIP_URL,languageP,id.toString(),type,languageP)
                     if (way == 3)
@@ -921,7 +921,7 @@
      * @param isStart true:起点标记 false:终点标记
      */
     private fun setMarker(latLon: LatLng, content: CharSequence = "", isStart: Boolean = true) {
-        val language = SPUtils.instance().getString("language")
+        val language = LanguageUtil.getLanguage()
         if (isStart) {
             val ic = when (language) {
                 Const.Language.ENGLISH -> R.mipmap.starting_point_e
diff --git a/app/src/main/java/com/igo/user/utils/google/AMapKit.kt b/app/src/main/java/com/igo/user/utils/google/AMapKit.kt
index b53b7e9..a09e9f8 100644
--- a/app/src/main/java/com/igo/user/utils/google/AMapKit.kt
+++ b/app/src/main/java/com/igo/user/utils/google/AMapKit.kt
@@ -14,7 +14,7 @@
 import android.view.View
 import android.widget.Toast
 import androidx.core.content.ContextCompat
-import cn.sinata.xldutils.utils.SPUtils
+import cn.sinata.xldutils.utils.LanguageUtil
 import com.google.android.gms.common.api.ApiException
 import com.google.android.gms.common.util.CollectionUtils.listOf
 import com.google.android.gms.maps.CameraUpdateFactory
@@ -325,7 +325,7 @@
         onClick: (latLngs: MutableList<LatLng>, lineTance: Float, lineTime: Long) -> Unit
     ) {
         //https://maps.googleapis.com/maps/api/directions/json?origin=39.99709957757345,116.31184045225382&destination=39.949158391497214,116.4154639095068&sensor=false&mode=driving
-        var language = SPUtils.instance().getString("language")
+        var language = LanguageUtil.getLanguage()
         var centerStr = getPointStr(centerPoint ?: arrayListOf())
         var url = "https://maps.googleapis.com/maps/api/directions/json" +
                 "?origin=" + start.latitude.toString() + "," + start.longitude.toString() +
@@ -362,7 +362,7 @@
         onClick: (latLngs: MutableList<LatLng>, lineTance: Float, lineTime: Long) -> Unit
     ) {
         //https://maps.googleapis.com/maps/api/directions/json?origin=39.99709957757345,116.31184045225382&destination=39.949158391497214,116.4154639095068&sensor=false&mode=driving
-        var language = SPUtils.instance().getString("language")
+        var language = LanguageUtil.getLanguage()
         val client: OkHttpClient = OkHttpClient().newBuilder()
             .build()
         val mediaType: MediaType = MediaType.parse("text/plain")!!
@@ -458,7 +458,7 @@
         lng: Double,
        function: ( List<GoogleNearBean2.ResultsBean>) -> Unit
     ) {
-        var language = SPUtils.instance().getString("language")
+        var language = LanguageUtil.getLanguage()
         var url = "https://maps.googleapis.com/maps/api/place/nearbysearch/json" +
                 "?location="+ lat.toString()+","+lng.toString() +
                 "&radius=1500" +
@@ -480,7 +480,7 @@
      */
     fun searchSite(context: Context, content: String?, cityName: String, function: (List<AutocompletePrediction>) -> Unit) {
         val placesClient = Places.createClient(context)
-        var language = SPUtils.instance().getString("language")
+        var language = LanguageUtil.getLanguage()
         val token = AutocompleteSessionToken.newInstance()
 //        val bounds = RectangularBounds.newInstance(
 //            LatLng(-33.880490, 151.184363), LatLng(-33.858754, 151.229596))
@@ -525,7 +525,7 @@
      * 逆地址编码
      */
     fun getAddress(context: Context,lat:Double,lon:Double,function:(String)->Unit) {
-        var language = SPUtils.instance().getString("language")
+        var language = LanguageUtil.getLanguage()
         var url = "https://maps.googleapis.com/maps/api/geocode/json" +
                 "?latlng="+ lat.toString() +","+lon.toString() +
                 "&language="+language+
@@ -539,7 +539,7 @@
 
     }
     fun getAddressName(context: Context,lat:Double,lon:Double,function:(String)->Unit) {
-        var language = SPUtils.instance().getString("language")
+        var language = LanguageUtil.getLanguage()
         var url = "https://maps.googleapis.com/maps/api/geocode/json" +
                 "?latlng="+ lat.toString() +","+lon.toString() +
                 "&language="+language+
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
index bf75d6e..14da8da 100644
--- a/app/src/main/res/layout/activity_login.xml
+++ b/app/src/main/res/layout/activity_login.xml
@@ -213,7 +213,7 @@
         android:layout_height="1px"
         android:background="@color/dividing_line_color"
         app:layout_constraintEnd_toEndOf="@id/et_phone"
-        app:layout_constraintStart_toStartOf="@id/et_phone"
+        app:layout_constraintStart_toStartOf="@id/tv_pwd"
         app:layout_constraintTop_toBottomOf="@id/barrier" />
 
     <CheckBox
diff --git a/xldutils-kotlin/src/main/java/cn/sinata/xldutils/activity/BaseActivity.kt b/xldutils-kotlin/src/main/java/cn/sinata/xldutils/activity/BaseActivity.kt
index 423b7e8..95b8df9 100644
--- a/xldutils-kotlin/src/main/java/cn/sinata/xldutils/activity/BaseActivity.kt
+++ b/xldutils-kotlin/src/main/java/cn/sinata/xldutils/activity/BaseActivity.kt
@@ -17,13 +17,11 @@
 import cn.sinata.xldutils.R
 import cn.sinata.xldutils.rxutils.RequestHelper
 import cn.sinata.xldutils.utils.LanguageUtil
-import cn.sinata.xldutils.utils.SPUtils
 import cn.sinata.xldutils.utils.myToast
 import cn.sinata.xldutils.widget.ProgressDialog
 import io.reactivex.disposables.CompositeDisposable
 import io.reactivex.disposables.Disposable
 import org.jetbrains.anko.AnkoLogger
-import kotlin.system.exitProcess
 
 /**
  * 基础activity,包含设置默认强制竖屏显示,广播方式实现关闭全部继承自该activity,并注册了关闭广播的子类
@@ -47,7 +45,7 @@
     }
 
     override fun attachBaseContext(newBase: Context?) {
-        val language = SPUtils.instance().getString("language")
+        val language = LanguageUtil.getLanguage()
         super.attachBaseContext(LanguageUtil.attachBaseContext(newBase, language, ""))
     }
 
diff --git a/xldutils-kotlin/src/main/java/cn/sinata/xldutils/rxutils/Error.kt b/xldutils-kotlin/src/main/java/cn/sinata/xldutils/rxutils/Error.kt
index a031924..4808465 100644
--- a/xldutils-kotlin/src/main/java/cn/sinata/xldutils/rxutils/Error.kt
+++ b/xldutils-kotlin/src/main/java/cn/sinata/xldutils/rxutils/Error.kt
@@ -1,24 +1,24 @@
 package cn.sinata.xldutils.rxutils
 
-import cn.sinata.xldutils.utils.SPUtils
+import cn.sinata.xldutils.utils.LanguageUtil
 
 /**
  *
  */
 object Error {
-    val REQUEST_ERROR = when(SPUtils.instance().getString("language")){
+    val REQUEST_ERROR = when(LanguageUtil.getLanguage()){
         "ch","zh"->"请求出错!"
         "fr"->"Erreur de demande"
         else->"Request Error"
     }
     val PARSER_ERROR = "Data Parse Error!"
-    val NET_ERROR = when(SPUtils.instance().getString("language")){
+    val NET_ERROR = when(LanguageUtil.getLanguage()){
         "ch","zh"->"网络异常,请检查您的网络状态!"
         "fr"->"Le réseau est anormal, veuillez vérifier l\'état de votre réseau!"
         else->"The network is abnormal, please check your network status!"
     }
 
-    val SERVER_ERROR = when(SPUtils.instance().getString("language")){
+    val SERVER_ERROR = when(LanguageUtil.getLanguage()){
         "ch","zh"->"服务器异常,请稍后再试"
         "fr"->"Erreur de serveur, veuillez réessayer plus tard"
         else->"Server error, please retry later"
diff --git a/xldutils-kotlin/src/main/java/cn/sinata/xldutils/rxutils/ResultCommonSubscriber.kt b/xldutils-kotlin/src/main/java/cn/sinata/xldutils/rxutils/ResultCommonSubscriber.kt
index 8453352..a11ac8b 100644
--- a/xldutils-kotlin/src/main/java/cn/sinata/xldutils/rxutils/ResultCommonSubscriber.kt
+++ b/xldutils-kotlin/src/main/java/cn/sinata/xldutils/rxutils/ResultCommonSubscriber.kt
@@ -1,7 +1,7 @@
 package cn.sinata.xldutils.rxutils
 
 import cn.sinata.xldutils.sysErr
-import cn.sinata.xldutils.utils.SPUtils
+import cn.sinata.xldutils.utils.LanguageUtil
 import com.google.gson.JsonSyntaxException
 import retrofit2.HttpException
 import java.net.ConnectException
@@ -44,7 +44,7 @@
      */
     open fun onError(code: Int, msg: String) {
         if (msg == "TOKEN_INVALID"){
-            _showToast(when(SPUtils.instance().getString("language")){
+            _showToast(when(LanguageUtil.getLanguage()){
                 "ch","zh"->"您的身份已过期,请重新登录"
                 "fr"->"Votre identité a expiré, veuillez vous reconnecter"
                 else->"Your identity has expired, please log in again"
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 f19d0f1..bb3031a 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
@@ -6,11 +6,27 @@
 import android.os.Build;
 import android.os.LocaleList;
 import android.text.TextUtils;
-import android.util.DisplayMetrics;
 
 import java.util.Locale;
 
 public class LanguageUtil {
+    private static String defaultLanguage = "";
+
+    public static void setDefaultLanguage(String language) {
+        defaultLanguage = language;
+    }
+
+    //获取语言
+    public static String getLanguage() {
+        return SPUtils.Companion.instance().getString("language", defaultLanguage);
+    }
+
+    //设置语言
+    public static void saveLanguage(Context context, String language) {
+        SPUtils.Companion.instance().put("language", language).apply();
+        LanguageUtil.changeAppLanguage(context, language, "");
+    }
+
     private static Locale getLocaleByLanguage(String language) {
         if (TextUtils.isEmpty(language)) {
             return Locale.FRENCH;
@@ -46,7 +62,7 @@
      * @param context
      * @param newLanguage 想要切换的语言类型 比如 Const.Language.ENGLISH ,"zh"
      */
-    public static void changeAppLanguage(Context context, String newLanguage, String country) {
+    private static void changeAppLanguage(Context context, String newLanguage, String country) {
         if (TextUtils.isEmpty(newLanguage)) {
             return;
         }
@@ -64,32 +80,5 @@
             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) {
-        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
-            changeAppLanguage(appContext, language, country);
-        }
-        SPUtils.Companion.instance().put("language", language);
-        SPUtils.Companion.instance().put("country", country);
-    }
-
-
-    public static void set(boolean isEnglish, Context context) {
-        Configuration configuration = context.getResources().getConfiguration();
-        DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
-        if (isEnglish) {
-            //设置英文
-            configuration.locale = Locale.ENGLISH;
-        } else {
-            //设置中文
-            configuration.locale = Locale.SIMPLIFIED_CHINESE;
-        }
-        //更新配置
-        context.getResources().updateConfiguration(configuration, displayMetrics);
     }
 }

--
Gitblit v1.7.1