【发布时间】:2017-04-24 20:48:52
【问题描述】:
希望有人能帮助我理解这一点:
我正在使用单活动应用程序和许多在同一个容器中替换的片段,并且我正在启用“不保留活动”选项的真实设备中测试我的应用程序
添加新片段时(使用
@987654321@方法),我正在使用@987654322@方法将信息传递给新片段。它按预期工作,我可以在该片段中使用@987654323@获取该信息。到目前为止一切正常...之后,我将我的应用程序发送到后台。我看到堆栈中的所有片段都被破坏了,正如预期的那样
我将我的应用程序带到前台,在
getArguments()方法中,我得到一个空的Bundle(不是 null,只是一个空对象),而不是带有我在 #2 中使用的数据的那个
根据 Android 文档,setArguments() 中提供的参数将在片段销毁和创建过程中保留...所以,我的问题是:
“将在片段销毁和创建之间保留”是否包括我描述的场景?
如果启用“不保留活动”选项,是否会与
getArguments()/setArguments()混淆?除了“不保留活动”选项之外,还有其他方法可以测试正确的片段创建/销毁吗?
正确保持片段参数“活动”的更好方法是什么?我可以将它们保存在onSaveInstanceState() 方法中,但想知道除此之外是否还有更多选项。
【问题讨论】:
-
你试过支持片段吗?至少它们在所有平台上的行为都是一致的。排除故障可能更容易。
-
@EugenPechanec 我正在使用支持片段
-
您介意分享一些代码吗?
-
@Reyansh Mishra 我不能,因为该项目来自工作,而不是我的。我将尝试创建一个仅具有片段事务功能的示例项目来验证 getArguments 问题
-
太奇怪了,我也遇到了同样的问题。
标签: android android-fragments android-lifecycle fragmentmanager