For #7559 - fixes 2 issues:
- The same item now doesn't recreate the activity - The app context now contains the right locale
This commit is contained in:
parent
1b7cb117ca
commit
2a876d5e0f
|
@ -21,17 +21,23 @@ class DefaultLocaleSettingsController(
|
|||
) : LocaleSettingsController {
|
||||
|
||||
override fun handleLocaleSelected(locale: Locale) {
|
||||
if (localeSettingsStore.state.selectedLocale == locale) {
|
||||
if (localeSettingsStore.state.selectedLocale == locale &&
|
||||
!LocaleManager.isDefaultLocaleSelected(context)) {
|
||||
return
|
||||
}
|
||||
localeSettingsStore.dispatch(LocaleSettingsAction.Select(locale))
|
||||
LocaleManager.setNewLocale(context, locale.toLanguageTag())
|
||||
LocaleManager.updateBaseConfiguration(context, locale)
|
||||
(context as Activity).recreate()
|
||||
}
|
||||
|
||||
override fun handleDefaultLocaleSelected() {
|
||||
if (LocaleManager.isDefaultLocaleSelected(context)) {
|
||||
return
|
||||
}
|
||||
localeSettingsStore.dispatch(LocaleSettingsAction.Select(localeSettingsStore.state.localeList[0]))
|
||||
LocaleManager.resetToSystemDefault(context)
|
||||
LocaleManager.updateBaseConfiguration(context, localeSettingsStore.state.localeList[0])
|
||||
(context as Activity).recreate()
|
||||
}
|
||||
|
||||
|
|
|
@ -51,3 +51,15 @@ fun LocaleManager.getSelectedLocale(
|
|||
fun LocaleManager.isDefaultLocaleSelected(context: Context): Boolean {
|
||||
return getCurrentLocale(context) == null
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the locale for the configuration of the app context's resources
|
||||
*/
|
||||
@Suppress("DEPRECATION")
|
||||
fun LocaleManager.updateBaseConfiguration(context: Context, locale: Locale) {
|
||||
val resources = context.applicationContext.resources
|
||||
val config = resources.configuration
|
||||
config.setLocale(locale)
|
||||
config.setLayoutDirection(locale)
|
||||
resources.updateConfiguration(config, resources.displayMetrics)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user