Android OnCreateView没有';在startActivityForResult()finish()之后,不会调用

Android OnCreateView没有';在startActivityForResult()finish()之后,不会调用,android,android-intent,android-fragments,Android,Android Intent,Android Fragments,如果没有internet,我有一个片段在OnCreateView中执行startActivityForResult()调用。在NoInternet活动中,有一个retry按钮,finish()用于删除该活动(因此我可以再次检查连接)。当活动完成时,片段的OnCreateView永远不会被调用(因为主机活动的OnCreate()永远不会被调用),我也不会再检查是否有internet 现在解决这个问题的一个简单方法是检查主活动(托管片段)的OnStart()中是否存在internet 但我想知道:是

如果没有internet,我有一个片段在OnCreateView中执行startActivityForResult()调用。在NoInternet活动中,有一个retry按钮,finish()用于删除该活动(因此我可以再次检查连接)。当活动完成时,片段的OnCreateView永远不会被调用(因为主机活动的OnCreate()永远不会被调用),我也不会再检查是否有internet

现在解决这个问题的一个简单方法是检查主活动(托管片段)的OnStart()中是否存在internet


但我想知道:是否有一种方法可以在使用startActivityForResult()启动的活动完成()后强制OnCreateView?

我不确定您是如何使用所讨论的片段/活动的,但在为新活动调用startActivityForResult()时,似乎主活动的片段视图没有被破坏。这种行为在某些情况下是正常的,这意味着您的片段只会被停止或暂停。因此,在OnStart()或OnResume()中执行网络检查是正确的用法。

我认为您的问题在于理解片段的生命周期。如果对片段调用startActivityForResult(),它将在片段的包含活动上执行。现在活动进入暂停然后停止状态,片段也将进入暂停状态。如果完成“ResultActivity”,则将在活动和片段上传递已启动和已恢复的状态

那么,您已经说过,只需将连接检查和startActivityForResult()调用移动到onStart()

不需要为片段创建新视图。如果您想以编程方式更改视图,可以在onStart()和onResume()中进行更改


但是不要仅仅为了一个方法调用而中断生命周期,这个方法调用可以很容易地在另一个回调中调用。

我完全忘记了片段有一个OnStart(我可能应该在这里放置我的internet处理逻辑)。干杯