Android - 在 fragment 中使用 Setter 与传递 Bundle

标签 android android-fragments

在我的代码中,我使用两种方法将数据传递到新 fragment 。我要么通过 Bundle 传递数据,要么有时编写 setter 来传递数据。

两者都工作正常,还没有遇到任何问题。

但现在,我正在优化我的代码,同时考虑保存的实例、方向更改或任何其他可能丢失数据的方式。

因此,我心中的确切疑问是,默认情况下,通过 bundle 发送的数据在方向更改/从背景恢复的 fragment 中是否保持完好无损。或者我们也必须在 bundle 的情况下使用 savedInstance。据我所知,通过 setter 设置的数据会丢失。

最佳答案

每当操作系统需要重新布局您的 View 时,它会调用 onCreateonCreateView 并保存实例状态。如果您使用构造函数并传递变量,您将丢失您设置的任何内容。如果您正在使用 bundle 并使用它直接更改某些变量,您可能会用 bundle 中的原始值覆盖它们。要解决这个问题,只需在执行更改之前检查包是否为空。

TLDR:通过方向更改和实例恢复,传入的包将保持完整。您可以在 onSaveInstanceState 中向保存的实例状态包添加额外数据。

关于Android - 在 fragment 中使用 Setter 与传递 Bundle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38026977/

相关文章:

android - 计时 fragment 转换 - Android

android - Android 中带有 Sherlock Fragment 的操作栏选项卡的自定义背景

java - 有趣的类CastException

java - 如何使用retrofit解析json数组?

android - android 自定义 View 是否应该包含任何业务逻辑?

java - 主要java.lang.RuntimeException : Unable to start activity ComponentInfo

android - 当我向右或向左移动 View 时如何执行操作?就像滑动锁定按钮一样

android - onCreate 方法在方向更改时调用两次

java - FragmentPagerAdapter Fragment getItem位置不对?

java - android中的聊天应用程序,以便发送者和接收者消息应该在不同的一边