ユーザーが言語を変更できるアプリがあります。
MainActivity.onCreate() に次のコードを追加するだけで、すべてが正常に機能しています。
String lang = PreferenceManager.getDefaultSharedPreferences(this).getString("languagePref", "default");
Configuration config = getResources().getConfiguration();
if( lang.equals("default") ) lang = Locale.getDefault().getLanguage();
config.locale = new Locale(lang);
getResources().updateConfiguration(config, getResources().getDisplayMetrics());
アプリを再起動したり、アクティビティをナビゲートしたりしても、正しい言語のままです。
唯一の問題は、PreferenceActivity 画面にあります。向きが変わると、PreferenceActivity のタイトル (およびそれのみ) が既定のデバイス言語に変更されます。
前に戻っても (PreferenceActivity を閉じると)、設定は正しくチェックされますが、アプリは正しい言語のままですが、アプリを再起動するまで PreferenceActivity は間違ったままです。
上記のコードを PreferenceActivity.onCreate() に強制しようとしましたが、デバッグは問題ないように見えますが、PrefenceActivity のタイトルは間違ったままです。
これが私のPrefenceActivityコードです:
public class PreferencesActivity extends PreferenceActivity {
@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
}
この動作は、他のアクティビティでは発生しません:/
画面の向きをロックすることはできません。
何かご意見は?
ありがとう。