Je travaille sur le langage Kotlin dans mon application et face à des difficultés concernant les paramètres régionaux Changing. Comme je l'ai fait j'ai créé une classe globale i.e sur java et sur cette classe j'ai écrit le code de la langue change le code de locale et cette fonction de code de langue que j'appelle à la classe d'application de base de mon projet qui est dans Kotlin.Langue Locale de changement dans "Kotlin" Programmation Comme locale fonctionne en Java Fine mais en langue Kotlin ne fonctionne pas
Voici mon code source:
classe mondiale (code 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());
}
base Code de classe d'application: (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
}
}
Comme ce qui se passe dans le code ici, j'ai des journaux d'impression dans la classe Java journal la langue obtient correctement: System.out.println ("GlobalLocale" + locale.toString());
mais journal de classe CrashApplication: println ("Languagekotlin" + gc.changelanguage (baseContext)) -> je reçois "Kotlin.Unit" Et aussi la langue ne change pas obtenir locale appropriée en java mais ne pas savoir Kotlin classe ne reçoit pas il retourne "Kotlin.Unit"
Et aussi sur Manifest j'ai mis: android: configChanges = "locale" Quelqu'un a une idée sur le changement de langue dans Kotlin. Part Plz.
Copie possible de [Modifier la langue par programme sous Android] (https://stackoverflow.com/questions/2900023/change-language-programmatically-in-android) – Zoe
J'ai voté pour la fermeture en tant que doublon car le code est exactement la même chose. La seule différence entre Java et Kotlin est la syntaxe. Vous pouvez utiliser les mêmes méthodes (et vous devez utiliser les mêmes méthodes) et les mêmes techniques. java et Kotlin utilisent les mêmes méthodes lors de l'exécution du framework Android, la seule différence est la syntaxe (et la sécurité nulle, mais en termes de code lui-même) – Zoe
'println (" Languagekotlin "+ gc.changelanguage (baseContext))' affiche "Languagekotlinkotlin .Unit "parce que' changelanguage' est une fonction 'void'. – marstran