在我的代码中,我使用两种方法将数据传递到新 fragment 。我要么通过 Bundle 传递数据,要么有时编写 setter 来传递数据。
两者都工作正常,还没有遇到任何问题。
但现在,我正在优化我的代码,同时考虑保存的实例、方向更改或任何其他可能丢失数据的方式。
因此,我心中的确切疑问是,默认情况下,通过 bundle 发送的数据在方向更改/从背景恢复的 fragment 中是否保持完好无损。或者我们也必须在 bundle 的情况下使用 savedInstance。据我所知,通过 setter 设置的数据会丢失。
最佳答案
每当操作系统需要重新布局您的 View 时,它会调用 onCreate
和 onCreateView
并保存实例状态。如果您使用构造函数并传递变量,您将丢失您设置的任何内容。如果您正在使用 bundle 并使用它直接更改某些变量,您可能会用 bundle 中的原始值覆盖它们。要解决这个问题,只需在执行更改之前检查包是否为空。
TLDR:通过方向更改和实例恢复,传入的包将保持完整。您可以在 onSaveInstanceState
中向保存的实例状态包添加额外数据。
关于Android - 在 fragment 中使用 Setter 与传递 Bundle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38026977/