SettingsActivityを作成して、ユーザーがプリファレンスを設定できるようにします。好みの1つは肌の色です。
Intent settingIntent = new Intent(this, SettingsActivity.class);
startActivity(settingIntent);
ユーザーが設定を終了したら、[完了]ボタンをタップしてMainActivityに戻ります。
Intent intent = new Intent();
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
intent.setClass(this, MainActivity.class);
startActivity(intent);
finish();
しかし、MainActivityは実際には変更されません。
onCreate()でのみ変更を適用することに気付きました
setTheme(SettingsActivity.getSkinColor()); // Get the preference from SharedPreference
setContentView(R.layout.mylayout);
この場合、アクティビティを再現する必要があると思います。そこで、 intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT)をintent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK )に変更します。
ただし、ユーザーが[完了]ボタンをタップすると、新しいMainActivityが作成されます。
アクティビティを再作成せずにsetThemeを適用する方法はありますか?または、少なくとも、新しいインスタンスを作成するときに、すべてのランタイムインスタンスと状態を保持しますか?