我正在申请中使用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分享。
答案 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请仔细阅读问题。现在只要投票,做正面投票。!!