“Kotlin”编程中的语言更改区域设置由于区域设置在Java Fine中工作,但在Kotlin语言中无效

时间:2017-09-15 07:10:30

标签: android localization kotlin locale

我正在申请中使用kotlin语言,并且在更改语言环境方面遇到一些困难。正如我所做的,我已经创建了一个全局类,即在java上,在这个类上,我编写了语言更改语言环境代码的代码,以及我在Kotlin中调用我的项目的基础应用程序类的语言代码函数。

这是我的源代码:

全球类(Java代码)

 public void changelanguage(Context context) {
    Locale locale = Locale.getDefault();
    Locale.setDefault(locale);
    System.out.println("GlobalLocale" +locale.toString());
    Configuration config = new Configuration();
    config.locale = locale;
    context.getResources().updateConfiguration(config,
            context.getResources().getDisplayMetrics());

}  

基础应用程序类代码:(Kotlin)

class CrashApplicationClass : Application() {

val TAG = CrashApplicationClass::class.java.simpleName
lateinit var sDefSystemLanguage: String
val gc = GlobalClass.getInstance()

override fun onCreate() {
    // TODO Auto-generated method stub

    // ACRA.init(this)
    super.onCreate()

    instance = this

    gc.changelanguage(baseContext)
    println("Languagekotlin" +  gc.changelanguage(baseContext))
    println("kotlininstance" + instance)
   // sDefSystemLanguage = Locale.getDefault().language
}


val requestQueue: RequestQueue? = null
    get() {
        if (field == null) {
            return Volley.newRequestQueue(applicationContext)
        }
        return field
    }

fun <T> addToRequestQueue(request: Request<T>, tag: String) {
    request.tag = if (TextUtils.isEmpty(tag)) TAG else tag
    requestQueue?.add(request)
}

fun <T> addToRequestQueue(request: Request<T>) {
    request.tag = TAG
    requestQueue?.add(request)
}

fun cancelPendingRequests(tag: Any) {
    if (requestQueue != null) {
        requestQueue!!.cancelAll(tag)
    }
}


companion object {
     val TAG = CrashApplicationClass::class.java.simpleName

    @get:Synchronized var instance: CrashApplicationClass? = null

        private set
}

}

由于这里的代码是什么,我在java类日志中打印日志语言正确获取: System.out.println(“GlobalLocale”+ locale.toString());

但是在CrashApplication类日志上: println(“Languagekotlin”+ gc.changelanguage(baseContext)) - &gt; 我得到“Kotlin.Unit” 并且语言没有改变在java中获取正确的语言环境但是不知道Kotlin类没有得到它返回“Kotlin.Unit”

还有Manifest我设置:android:configChanges =“locale” 任何人都对Kotlin的语言变化有所了解。 Plz分享。

1 个答案:

答案 0 :(得分:1)

我已经用Kotlin语言解决了这个问题,现在通过改进这个功能来改变语言

public String changelanguage(Context context) {
    //String lang = "hi_IN";
  //  Locale locale = new Locale(lang);
    Locale locale = Locale.getDefault();
    Locale.setDefault(locale);
    System.out.println("GlobalLocale" +locale.toString());
    Configuration config = new Configuration();
    config.locale = locale;
    context.getResources().updateConfiguration(config,
    context.getResources().getDisplayMetrics());
    return  locale.toString();
} 

它解决了我的Kotlin.unit错误 和@marstran感谢你在我出错的地方给我提示我的问题。现在这个问题在Kotlin已经解决了。

在做负面投票之前@LunarWatcher请仔细阅读问题。现在只要投票,做正面投票。!!