当前位置: 首页 > 知识库问答 >
问题:

Android-使用Setters Vs在片段中传递Bundle

姚星宇
2023-03-14

在我的代码中,我使用两种方法将数据传递给一个新的片段。或者我通过Bundle传递数据,或者有时编写setter来传递数据。

两个工作都很好,还没有问题。

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

因此,在我心目中,确切的疑问是通过bundle发送的数据是否在定向更改/从后台恢复的片段默认情况下保持完整。或者在bundle的情况下也必须使用savedInstance。据我所知,通过设置器设置的数据会丢失。

共有1个答案

苍和裕
2023-03-14

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

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

 类似资料:
  • 问题内容: 以及Android文档: http://developer.android.com/training/basics/fragments/communicating.html 以及本文: http://manishkpr.webheavens.com/android-passing-data-between- fragments/ 尽管上述所有情况都与我的情况相似,但并不完全相同。我在这

  • 这是我的代码,根据文档,它是用于: 我在这里找到了一个解决方案,但我并不真正理解它,因为它是用编写的,我也不理解。我需要帮助!! ---编辑----

  • 我已经创建了导航抽屉活动,作为导航抽屉活动的更新新格式,根据新的Android架构,我用导航组件结构得到了它。 带有和的代码位于下方,当我单击任何导航项时,它正在打开片段。 这适用于nav\u host\u片段: 导航正在使用此 现在我想在调用时将一些值作为一个束(参数)在片段中传递。 场景:我有两个片段,分别是PrivacyPolicyFragment和TermsConditionsFragme

  • 我想将数据从父片段传递到选项卡式片段(子片段),以便传递初始数据(当父片段第一次加载时),我使用了Bundle数据。当在子片段的嵌套片段中时,我调用PopbackStack(),以便通过单击按钮返回。在那里,我需要更新之前传递到子选项卡片段的捆绑数据。捆绑数据不会得到更新的数据集 父片段-初始状态 子片段-Tab片段 孩子- 我错过了什么?请帮忙

  • 我已经开始使用Android架构组件(导航和安全参数、视图模型)以及Koin库。 目前,我在两个片段之间传递参数时遇到了一个问题——我需要将字符串值从片段a传递到片段B,在片段B中修改该值,然后将其传递回片段a。 我找到了一个解决问题的可能方法——共享视图模型。不幸的是,这种方法有一个问题,因为我可以在屏幕之间传递和修改值,但是当片段A导航到另一个目的地时,共享视图模型中的值仍然被存储并且没有被清

  • 我有两个活动,在活动1中有碎片,在活动2中有碎片 fragment1和fragment2扩展自FragmentActivity1,activity2扩展自AppCompatActivity 我想将字符串值从fragment1发送到fragment2,而不获取空值。我希望你能理解这个问题。谢谢