私の 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"
このソリューションはうまく機能しますが、画面を回転させるとすぐにデフォルトの構成に戻り、言語が復元されます。
この問題を解決するにはどうすればよいですか?