在startActivityForResult()finish()es之后,不会调用OnCreateView

时间:2013-07-25 19:35:30

标签: android android-intent android-fragments

如果没有互联网,我有一个在OnCreateView中执行startActivityForResult()调用的片段。在NoInternet Activity中有一个重试按钮,用于完成()es活动(所以我可以再次检查连接)。当活动结束时,永远不会调用片段的OnCreateView(因为从不调用主机Activity的OnCreate())并且如果再次存在互联网,我最终不会查看。

现在一个简单的方法就是检查主要活动的OnStart()中是否有互联网(承载片段)。

但我想知道:有没有办法在使用startActivityForResult()启动的一个Activity完成后强制使用OnCreateView?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

那么,你是怎么说的,只需将你的连接检查和你的startActivityForResult()调用移动到onStart()。

无需为Fragment创建新视图。如果要在程序上更改View,可以在onStart()和onResume()中执行此操作。

但是不要仅仅为了在另一个回调中可以轻松调用的方法调用来破坏生命周期。