Как из второй активити вернуться в первую, при этом пересоздав первую?

Имеется приложения с 3 экранами. Экран А- главный и два вспомогательных - Б и С. В экране Б я изменяю тему приложения, но возвращаюсь к главному экрану и вижу что изменения не применились. Иду дальше в С и там они применились, даже если перед этим всем зайти в С. Так как setTheme находится везде в onCreate,то логично предположить(дебаг подтверждает), что onCreate первой самой активити - экрана А не применяется заново.

  1. Как сделать так, что бы при возврате из второй активити в первую(Б->A) у меня применялся метод onCreate(полное пересоздание активити)? 2)Почему С ведёт себя так как будто она пропадает из стэка активити? Ведь по логике если я зашел в С, потом пошёл поменял тему в Б через А. то при возврате в С тоже не должен onCreate применяться.

Я допёр до чего-то такого - при вызове Б я делаю так:

intentSettings.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
intentSettings.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)

и в Б переопределяю onBackPressed так что бы заново вызывалась активити А. Спасибо


Ответы (1 шт):

Автор решения: Sergei Buvaka

Вы можете просто повторно использовать Intent, который создал нужную вам Activity. Создаейте в вашей Activity переменную

Intent intent;

а в onCreate (), присвойте ей значение

starterIntent = getIntent();

После того как вы захотите пересоздать вашу Activity вызовите

finish(); 
startActivity(starterIntent);

Это не очень элегантное решение и я думаю, что корень вашей проблемы в другом месте, но это простой способ перезапустить свою Activity и заставить ее перезагрузить все.

→ Ссылка