我正在使用我的應用程序中的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份額。
[在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