アプリケーションの言語を変更する方法 (構成を更新する方法) は既に知っています。私のコードは、システムによって構成が変更されているかどうかも確認し、「onCreate」メソッドで「修正」します。私は ListPreference を作成して、アプリがサポートする言語をユーザーが決定できるようにしました (そして決定を保存します)。
3 つのアクティビティ (A、B、および SettingsActivity) があるとします。アクティビティ A は、アクティビティ B と SettingsActivity を開始できます。アクティビティ B は SettingsActivity を開始できます。ユーザーが SettingsActivity 内の言語を変更した場合、次のコードを使用して問題なくリソース (この場合は文字列) を更新できます。
//if (Build.VERSION_CODES.HONEYCOMB <= Build.VERSION.SDK_INT) {
// Disabled because it blinks and looks bad
// recreate();
// } else {
startActivity(getIntent());
finish();
overridePendingTransition(0, 0);
// }
ただし、SettingsActivity からの参照がないため、既に開いているアクティビティを変更することはできません。
私の質問: リソースを更新したり、既に開いているアクティビティを再作成したりするクリーンな方法はありますか? より良い解決策が見つからない場合、私のアプローチは上記のいずれかになります。
- を使用してアクティビティを開始
startActivityForResult
し、アクティビティを再作成するために既に使用しているコードをトリガーするコードを返します。 onResume
現在の言語が変更されているかどうかをメソッド内で確認し、同じことを行います。