2017-09-15 58 views
-1

我正在使用我的应用程序中的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份额。

+0

[在Android中以编程方式更改语言的可能的重复](https://stackoverflow.com/questions/2900023/change-language-programmatically-in-android) – Zoe

+0

我已投票将其作为重复关闭,因为代码是完全相同。 Java和Kotlin之间唯一的区别就是语法。你可以使用相同的方法(并且你必须使用相同的方法)和相同的技术。 java和Kotlin在运行Android框架时使用相同的方法,唯一的区别是语法(和安全性为null,但是就代码本身而言) – Zoe

+0

'println(“Languagekotlin”+ gc.changelanguage(baseContext))'prints“Languagekotlinkotlin .Unit“,因为'changelanguage'是一个'void'函数。 – marstran

回答

1

我现在已经解决了科特林语言这个问题通过改善该功能

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在做负面投票前请仔细阅读问题。现在只是投票,做正面投票。

相关问题