Grazie della risposta.
Sto provando ma non riesco a farlo funzionare.
Nell'app c'è un BaseFragment in cui viene definito un metodo initResources() che viene richiamato in tutti i Fragment.
La funzione del cambio risorse è questa:
Nel BaseFragment ho impostato il seguente codice:codice:fun setLocaleLanguage(context: Context, language: String): Configuration? { val locale = Locale(language.lowercase()) Locale.setDefault(locale) val res: Resources = context.getResources() val dm: DisplayMetrics = res.getDisplayMetrics() val conf: Configuration = res.getConfiguration() conf.setLocale(locale) // API 17+ only. res.updateConfiguration(conf, dm) return conf }
E nel Fragment derivato da BaseFragmentcodice:override fun onConfigurationChanged(newConfig: Configuration) { super.onConfigurationChanged(newConfig) } protected open fun initResources() { DeviceInfo.userLanguage?.run { MyLog.d(reqTag, "$reqTag: Aggiorno la lingua con quella settata dall'utente $this") val newConfig = LocaleHelper.setLocaleLanguage(requireActivity().applicationContext, this) newConfig?.run { onConfigurationChanged(this) } } }
dove title e description sono delle TextView presenti nel layout del Fragment.codice:override fun initResources() { reqTag = "UserAccess" super.initResources() //text binding.title.text = getString(R.string.ua_title) binding.description.text = getString(R.string.ua_description) }
Nel blocco di codice del cambio lingua entra (super.initResources()) ma la lingua non viene cambiata

Rispondi quotando