在Android 8上更改我的应用程序中的语言

时间:2018-05-21 08:42:26

标签: android kotlin

我无法在Android 8.0上将我的应用程序更改为其他语言

我的代码: 申请类

class MyApplication : Application() {

companion object {
    fun changeLanguage(context: Context, lang: String) {
        Log.e(context.packageName, lang)
        val locale = Locale(lang)
        Locale.setDefault(locale)
        val config = context.resources.configuration
        config.setLocale(locale)
        context.createConfigurationContext(config)
        context.resources.updateConfiguration(config, context.resources.displayMetrics)

        val sharedPreference = PreferenceManager.getDefaultSharedPreferences(context)
        sharedPreference.edit().putString("lang", lang).apply()
    }
}

override fun onCreate() {
    super.onCreate()
    val sharedPreference = PreferenceManager.getDefaultSharedPreferences(this)
    val lang = sharedPreference.getString("lang", "en")

    changeLanguage(this, lang)
  }
}

MainActivity类

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    val sharedPreference = PreferenceManager.getDefaultSharedPreferences(this)
    val lang = sharedPreference.getString("lang", "en")
    if (lang == "en") {
        switchLanguage.setText(R.string.english)
    } else {
        switchLanguage.setText(R.string.viet)
    }
    switchLanguage.isChecked = lang != "en"
    switchLanguage.setOnCheckedChangeListener { _, b ->
        if (!b) {
            MyApplication.changeLanguage(baseContext, "en")
        } else {
            MyApplication.changeLanguage(baseContext, "vi")
        }

        finish()
        startActivity(intent)
      }
   }
}

首次运行应用时: first run

当我将语言更改为越南语时,工具栏不会更改语言 toolbar not change language

当我杀了app并重新打开所有textview转换为英语 all textview convert to english

抱歉我的英文

0 个答案:

没有答案