2015-03-18 2 views
0

Возможно ли повторное использование метода OnCreate()Activity, с которым мы возвращаемся, после завершения деятельности, в которой мы в настоящее время?Retrigger OnCreate() метод деятельности

Я пробовал метод startActivityForResult(), но это нехорошее решение, так как оно бесполезно работает с backstack.

Кроме того, я не могу использовать метод активности onResume(), поскольку функция, которую мне нужно выполнить (изменение темы), может быть выполнена только на onCreate() для правильной работы.

Любые предложения по этому вопросу? Я что-то упускаю ? Спасибо.

+0

Надеюсь, если вы вызовете возвращаемую активность через намерение после окончания текущей активности, onCreate(). –

ответ

0

Im не уверен, почему вы хотите создать свою деятельность. Но я думаю, что вызов этого метода может помочь вам:

reCreate(); 

От http://developer.android.com

общественного недействительными Recreate() Добавлено в уровне API 11

Причина этой деятельности будет воссоздан с новым экземпляром , Это приводит к по существу тем же самым потоком, что и при создании Activity из-за изменения конфигурации - текущий экземпляр перейдет через свой жизненный цикл в onDestroy() и затем создаст новый экземпляр, созданный после него.

Вы также можете попробовать этот способ:

startActivity(getIntent()); 
finish(); 
+0

Мне нужно воссоздать активность, потому что мне нужно изменить тему. И если я изменю тему, и я вернусь к этой деятельности, изменение темы не имеет никакого эффекта. Только когда он воссоздается, изменение темы относится к активности. – Phantom

+0

этот метод перезапустит вашу деятельность и ее жизненный цикл. Я вызываю reCreate(), поможет вам. попробуйте и дайте мне знать результат :) –

+0

К сожалению, этот метод не вызывается при возврате к активности. – Phantom

-1

Это возможно, если мы называем OnCreate() из onActivityResult() метод непосредственно.

Но это не рекомендуется нарушать активность на протяжении жизненного цикла Android

Если вы действительно хотите сделать некоторые полезные задачи в OnCreate(), то вы можете сделать это в onResume() метод

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

Для этого случая вы можете использовать Фрагмент. Вам просто нужно добавить новый фрагмент в onResume() методом

  1. Для создания фрагмента: How to create Fragment

  2. В onResume(), заменить content_frame с новым Фрагмент, в котором вам нужно тема изменения

ОБНОВЛЕНИЕ:

От вашего MainActivity.Java:

startActivityForResult(/* parameters for calling SecondActivity*/); 
finish(); 

Таким образом, ваше призвание деятельность (которая MainActivity.java) завершена. Итак, когда SecondActivity будет завершена, фокус придет к onActivityResult() MainActivity.java и onCreate() также будет называться, потому что он был закончен

+0

Да, я знаю. Как я уже упоминал, я пробовал этот подход, но он испортил жизненный цикл деятельности и действительно не является хорошим рекомендуемым решением. – Phantom

+0

, так что ваша связанная с темой работа в методе onResume() – Kushal

+0

Нет, она работает правильно только при использовании метода onCreate(), прежде чем вызвать супер-конструктор. – Phantom