我创建了多语言(英语,俄语,乌兹别克语)应用程序。我将4个字符串resoureses放在4个文件夹中(values,values-en,values-ru,values-uz)为docs。当我在App Controller中更改应用程序语言更新资源配置时,如下所示:
Settings.LANGUAGE = prefs.getString(User.LANG, Settings.RUSSIAN);
Locale locale = new Locale(Settings.LANGUAGE);
Locale.setDefault(locale);
Configuration configuration = new Configuration();
configuration.locale = locale;
getBaseContext().getResources().updateConfiguration(configuration,
getBaseContext().getResources().getDisplayMetrics());
之后通过调用App控制器的方法重新启动应用程序,如下所示:
public void reStart() {
Intent i = getBaseContext().getPackageManager()
.getLaunchIntentForPackage(getBaseContext().getPackageName());
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
}
在他们之后它几乎适用于所有设计。但在三星Galaxy S6(SM-G920F)上,它的工作原理很疯狂。有些词是英语,有些是乌兹别克语和ets。 那么,如何修复此错误?是不是(适用于)所有设备支持的“支持不同语言”的概念? 顺便说一下,我已经检查过所有资源都是用相应的语言给出的(如附图所示):
答案 0 :(得分:2)
根据我的观察,奇怪的行为只影响活动标题,我发现我在Manifest文件中设置了活动标题的翻译。只有这些翻译行为不端。所有其他动态设置的翻译工作正常。 因此,为了解决问题,我从Manifest文件中删除了所有活动标签,然后在onCreate方法中设置活动标题,如下所示:
getSupportActionBar().setTitle(R.string.title_activity_followers);
问题解决了。