首页 > 解决方案 > 在 Android 8 上更改我的应用程序中的语言

问题描述

我无法在 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)
      }
   }
}

首次运行应用程序时: 第一次运行

当我将语言更改为越南语时,工具栏不会更改语言 工具栏不改变语言

当我杀死应用程序并重新打开所有文本视图时转换为英文 所有文本视图都转换为英文

对不起我的英语

标签: androidkotlin

解决方案


推荐阅读