Я не могу изменить свое приложение на другой язык на 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)
}
}
}
При первом запуске приложения:
Когда я меняю язык на вьетнамский, панель инструментов не меняет язык
Когда я убиваю приложение и снова открываю все текстовые представления, конвертирую в английский
извините, мой английский