私のAndroidアプリケーションは二言語です。したがって、2つのresフォルダー値とvalue-sw(スワヒリ語用)があります。設計時および実行時に、このファイルから文字列値をフェッチしています。例:レイアウト:
android:hint="@string/Officer"
およびコード内:
getResources().getString(R.string.Officer);
ロケール設定を変更するには、次のようなonCreate()で呼び出す関数があります。
public void ChangeLanguage(Context ctx,String Language){
Resources res = ctx.getResources();
DisplayMetrics dm = res.getDisplayMetrics();
android.content.res.Configuration config = res.getConfiguration();
config.locale = new Locale(Language.toLowerCase());
res.updateConfiguration(config, dm);
}
すべて正常に動作します。向きを変えた場合にのみ問題が発生します。
たとえば、起動時に言語をスワヒリ語に設定しました。つまり、すべてがスワヒリ語にあります。ここで、向きを垂直から水平、またはその逆に変更するとします。レイアウトに設定されたテキストボックスボックスのヒントは、私が期待するスワヒリ語のままです。しかし、getResources()。getString(R.string.Officer); 英語のデフォルト値ファイルから値をフェッチします。
助言がありますか?