내 응용 프로그램에서 kotlin 언어로 작업 중이며 로케일 변경과 관련하여 어려움을 겪고 있습니다. 내가 뭘 가지고 내가 한 세계적인 클래스를 만들었습니다. 즉,이 클래스에서 언어 변경 로캘 코드 및 해당 언어 코드 함수를 작성했습니다. Kotlin에있는 내 프로젝트의 기본 응용 프로그램 클래스를 호출하고 있습니다. 여기 "Kotlin"에서 언어 변경 로케일 프로그래밍 Java Fine에서 작동하지만 Kotlin 언어로 작동하지 않음
내 소스 코드 :글로벌 클래스 (자바 코드)
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
}
}
가는 뭐죠로 여기에 코드에서 자바 클래스 로그에 인쇄 로그가 있습니다. 언어는 올바르게 가져옵니다. System.out.println ("GlobalLocale"+ locale.toString());
하지만 CrashApplication 클래스 로그에
: 에 println ("Languagekotlin"+ gc.changelanguage (baseContext)) -> 내가 "Kotlin.Unit"를 얻고있다 또한 언어가 변경되지는 자바에서 적절한 로케일을 받고 있지만,하지 Kotlin 클래스가 "Kotlin.Unit"을 반환하지 않는다는 것을 알 수 있습니다.또한 Manifest에 다음과 같이 설정했습니다. android : configChanges = "locale" 누구나 Kotlin의 언어 변경에 대한 아이디어가 있습니다. Plz 공유.
가능한 [Android에서 프로그래밍 방식으로 언어 변경] (https://stackoverflow.com/questions/2900023/change-language-programmatically-in-android) – Zoe
코드가 올바르지 않으므로 중복 된 것으로 투표했습니다. 똑같은. Java와 Kotlin의 유일한 차이점은 구문입니다. 동일한 방법을 사용할 수 있으며 동일한 방법을 사용해야하며 동일한 기술을 사용할 수 있습니다. 자바와 코 틀린은 안드로이드 프레임 워크를 실행할 때 같은 방법을 사용한다. 유일한 차이점은 문법 (그리고 null 안전성, 코드 자체에 관해서)이다. – Zoe
'println ("Languagekotlin"+ gc.changelanguage (baseContext))'prints "Languagekotlinkotlin .unit "왜냐하면'changelanguage'는'void' 함수이기 때문입니다. – marstran