【发布时间】:2015-07-15 04:01:53
【问题描述】:
在我的 Android 应用程序中,我想动态更改默认语言。我已经实现了这个方法:
public void changeLanguage(String lang) { //lang="it" or "en" for example
myLocale = new Locale(lang);
Resources res = getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
conf.locale = myLocale;
res.updateConfiguration(conf, dm);
Handler handler = new Handler();
handler.postDelayed(new Runnable()
{
@Override
public void run()
{
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB)
{
finish();
startActivity(getIntent());
} else recreate();
}
}, 1);
}
在清单中,我将这一行添加到我的 MainActivity:
android:configChanges="locale|orientation"
我也试过这个:
android:configChanges="locale|layoutDirection"
此解决方案效果很好,但一旦屏幕旋转就会恢复默认配置并恢复语言。
我该如何解决这个问题?
【问题讨论】:
-
我已经尝试过他们在那篇文章中提供的解决方案,但正如我上面所说的那样,它不起作用。
标签: android locale dynamic-languages android-configchanges