Issue
I change locale this way.
override fun attachBaseContext(base: Context) {
super.attachBaseContext(updateResources(base, sessionInteractor.locale))
}
fun updateResources(context: Context, locale: Locale): Context {
Locale.setDefault(locale)
val resources = context.resources
val config = Configuration(resources.configuration)
config.setLocale(locale)
return context.createConfigurationContext(config)
}
It's perfect works for activities but doesn't work for fragments.
Solution
You need to refresh the fragment after setting the locale. The language won't change if you don't recreate an Activity
, similarly, refresh a Fragment
like this:
Fragment frag = null;
frag = getSupportFragmentManager().findFragmentByTag("Your_Fragment_TAG");
final FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.detach(frag);
fragmentTransaction.attach(frag);
fragmentTransaction.commit();
If there's no tag in your fragment, add the following code:
fragmentManager.beginTransaction().replace(R.id.your_id, fragment, "Your_Fragment_TAG").commitAllowingStateLoss();
Answered By - SaadAAkash
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.