2017-09-15 55 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在做負面投票前請仔細閱讀問題。現在只是投票,做正面投票。

相關問題