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

5

背景: 我有一个使用ActivitiesFragments的应用程序。 我将其暂停以访问其他应用程序,如Google Translate。从GTranslate中,我使用共享Intent过程将文本数据发送到我的应用程序,并使用intent-filter ACTION_SEND。 即使第一个应用程序在后台运行,它当前的activity也会被重新创建。

问题是所提到的activity关联的fragment也没有被重新创建,更烦人的是,它没有恢复(fragmentonResume方法从未被调用)。

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

或者我完全错了吗?

1个回答

0

使用FragmentActivity而不是Activity。

来自FragmentActiviy

将onResume()分派给片段。请注意,为了更好地与旧版本的平台进行交互,在此调用点上附加到活动的片段未恢复。这意味着在某些情况下,先前的状态仍可能被保存,不允许修改状态的片段事务。为了正确地与处于适当状态的片段交互,您应该覆盖{@link #onResumeFragments()。

因此,在FragmentActivity中操作片段的正确位置是像这样覆盖onResumeFragments方法:

protected void onResumeFragments(){    
super.onResumeFragments();

        // YOUR STUFF IS HERE
}

即使在onResumeFragments中操作片段,它也无法正常工作。 - damson
提供一些你正在做的代码片段会很有帮助。重新阅读你的帖子后,听起来像是你正在使用Google翻译共享意图打开应用程序的另一个实例,而不是使用onActivityResult()、bundle等接收GTranslate数据,因此你的原始应用程序无法接收数据,原始片段也会停止。 - Rick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接