“Kotlin”编程中的语言更改语言环境由于语言环境适用于Java Fine,但Kotlin语言不起作用
问题描述:
我正在使用我的应用程序中的kotlin语言,并且在更改语言环境时遇到了一些困难。正如我所做的一样,我已经创建了一个全局类,即在Java上,并且在这个类中,我编写了语言更改语言环境代码的代码,以及我正在调用基础应用程序类的我的项目在Kotlin中的语言代码函数。“Kotlin”编程中的语言更改语言环境由于语言环境适用于Java Fine,但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());
}
基本应用程序类代码:(科特林)
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)) - > 我得到 “Kotlin.Unit” 而且还语不改得到适当的区域设置在Java,但不知道Kotlin类没有得到它返回“Kotlin.Unit”
而且在清单上我已经设置:android:configChanges =“locale” 任何人都有关于Kotlin的语言变化的想法。 Plz份额。
答
我现在已经解决了科特林语言这个问题通过改善该功能
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在做负面投票前请仔细阅读问题。现在只是投票,做正面投票。
[在Android中以编程方式更改语言的可能的重复](https://stackoverflow.com/questions/2900023/change-language-programmatically-in-android) – Zoe
我已投票将其作为重复关闭,因为代码是完全相同。 Java和Kotlin之间唯一的区别就是语法。你可以使用相同的方法(并且你必须使用相同的方法)和相同的技术。 java和Kotlin在运行Android框架时使用相同的方法,唯一的区别是语法(和安全性为null,但是就代码本身而言) – Zoe
'println(“Languagekotlin”+ gc.changelanguage(baseContext))'prints“Languagekotlinkotlin .Unit“,因为'changelanguage'是一个'void'函数。 – marstran