使用意图共享后,片段未恢复其活动

Posted

技术标签:

【中文标题】使用意图共享后,片段未恢复其活动【英文标题】:Fragment not resumed with its activity after using intent sharing 【发布时间】:2013-09-06 21:29:33 【问题描述】:

上下文: 我有一个使用ActivitiesFragments 的应用程序。 我暂停它以访问另一个,如谷歌翻译。在 GTranslate 中,我使用共享 Intent 进程通过 intent-filter ACTION_SEND 将文本数据发送到我的应用程序。 即使第一个应用程序在后台,它当前的activity 也会重新创建。

问题是与提到的activity关联的fragment也没有重新创建,更烦人的没有恢复(片段的onResume方法永远不会被调用)。

问题: 为什么在通过应用程序使用intent 时,fragments 不遵循其父活动的生命周期并且至少没有恢复? 有没有办法解决这个问题?

还是我完全错了?

【问题讨论】:

【参考方案1】:

使用 Fragment Activity 而不是 Activity。

来自FragmentActiviy:

分派 onResume() 到片段。请注意,为了更好的互操作 对于较旧版本的平台,在此调用时 附加到活动的片段不会恢复。这意味着在 在某些情况下,之前的状态可能仍被保存,不允许 修改状态的碎片交易。正确互动 片段处于正确状态时,您应该覆盖 @link #onResumeFragments().

因此,在 FragmentActivity 中操作片段的正确位置是重写 onResumeFragments 方法,如下所示:

protected void onResumeFragments()    
super.onResumeFragments();

        // YOUR STUFF IS HERE

【讨论】:

即使在onResumeFragments 中操作片段,它也不起作用。 您正在做的一些代码 sn-ps 会有所帮助。重新阅读您的帖子后,听起来您正在使用谷歌翻译共享意图打开您的应用程序的另一个实例,副使用类似 onActivityResult()、捆绑包等来接收来自 GTranslate 的数据,因此您的原始应用程序没有t 接收数据并且原始片段也被停止。

以上是关于使用意图共享后,片段未恢复其活动的主要内容,如果未能解决你的问题,请参考以下文章

从活动接收意图后如何创建片段?

片段创建的 Intent 不会触发 onNewIntent

从意图活动访问片段方法

启动谷歌地图意图后返回活动

替换 SingleTask 活动中的片段

如何刷新片段'onResume?