我在onCreate()
的BaseActivity中使用我的所有项目中的默认代码:
Locale locale = new Locale("ru");
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
context.getApplicationContext().getResources().updateConfiguration(config, context.getResources().getDisplayMetrics());
我尝试像new Locale("ru", "RU")
一样放在这里 - 没有区别。这个问题只发生在android 5.02 NOT 5.0,5.01中的奇怪部分。还存在这样的problem所以我的假设是locale api的重大变化。
编辑:我在更改设置
中的区域设置后重新启动整个应用程序答案 0 :(得分:0)
你必须重新启动活动,但要注意这不会更新已经打开的活动(后备堆栈中的alreardy),我通常会更新然后调用主活动 清单中包含以下属性
<activity
android:name=".activities.SplashActivity"
android:label="@string/app_name"
android:launchMode="singleTop" #the important
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
更新lang的小说
public static void updateLanguage(Context ctx, String lang, boolean goToHomeScreen) {
Configuration cfg = new Configuration();
if (!TextUtils.isEmpty(lang))
cfg.locale = new Locale(lang);
else
cfg.locale = Locale.getDefault();
ctx.getResources().updateConfiguration(cfg, null);
if (goToHomeScreen) {
Intent intent = new Intent(ctx, HomeActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_CLEAR_TOP);
ctx.startActivity(intent);
}
}