重新触发活动的OnCreate()方法

时间:2015-03-18 10:09:22

标签: android android-activity android-lifecycle oncreate

在完成我们目前正在进行的活动后,是否有可能重新触发我们要返回的OnCreate() Activity方法?

我尝试了startActivityForResult()方法,但这不是一个好的解决方案,因为它会混淆活动的backstack

此外,我无法使用活动的onResume()方法,因为我需要执行的功能(主题更改)只能在onCreate()上完成才能正常工作。

对此有何建议?我错过了什么吗?谢谢。

2 个答案:

答案 0 :(得分:0)

我不确定您为什么要重新创建活动。 但我认为调用这种方法可以帮助你:

reCreate();

来自http://developer.android.com

  

public void recreate()在API级别11中添加

     

导致使用新实例重新创建此活动。结果   基本上与由于a创建Activity时相同的流程   配置更改 - 当前实例将通过它   生命周期到onDestroy(),然后在它之后创建一个新实例。

您也可以尝试这种方式:

 startActivity(getIntent());
 finish();

答案 1 :(得分:-1)

如果我们直接从onActivityResult()方法调用onCreate()就可以。

但这不建议打破Android的活动生命周期

  

如果你真的想在onCreate()中做一些有用的任务,那么你可以   在onResume()方法

中执行此操作

根据您的要求,我了解您希望在子活动完成后为活动视图设置新主题。

对于这种情况,您可以使用片段。您只需在onResume()方法

中添加新片段即可
  
      
  1. 对于片段创建:How to create Fragment

  2.   
  3. 在onResume()中,将content_frame替换为需要更改主题的新片段

  4.   

更新

来自 MainActivity.java

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

这样,您的调用活动(MainActivity.java)就完成了。因此,当SecondActivity完成时,焦点将出现在MainActivity.java的onActivityResult()上,而onCreate()也将被称为,因为它已经完成