我正在使用以下方法以编程方式更改我的应用程序的语言环境。它工作正常,但是当我使用 Intent.FLAG_ACTIVITY_CLEAR_TOP 标志启动已经存在的singleTask活动时。然后应用程序失去了布局方向,但翻译是正确的。例如,如果应用程序语言是阿拉伯语,则所有视图方向都更改为英语区域设置(从左到右)。可能是什么原因?
我在 BaseActivity 和 Application 类的 attachBaseContext 中调用以下方法。
public Context createLocaleConfiguration(Context context,String language) {
Locale newLocale = new Locale(language);
Resources res = context.getResources();
Configuration configuration = res.getConfiguration();
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.N) {
LocaleList localeList = new LocaleList(newLocale);
LocaleList.setDefault(localeList);
configuration.setLocales(localeList);
configuration.setLayoutDirection(newLocale);
context = context.createConfigurationContext(configuration);
} else {
configuration.setLocale(newLocale);
configuration.setLayoutDirection(configuration.locale);
Locale.setDefault(newLocale);
context = context.createConfigurationContext(configuration);
}
return context;
}
@Override
protected void attachBaseContext(Context newBase) {
super.attachBaseContext(LocaleManager.getInstance().createLocaleConfiguration(newBase,language));
}
任何想法都将是可观的。谢谢