配置更改后恢复片段的对象引用

2024-01-05

我的活动中有一个复杂的数据对象。当用户想要编辑该对象的数据时,会显示一个类似片段的浮动对话框。该片段引用了数据对象的某些部分。用户对此片段中的数据进行实时编辑。例如,一些简单的文本编辑。

当用户编辑此数据时,会发生配置更改。(著名的方向更改)。更改后,系统会自动重新创建所有内容,包括浮动片段,就像以前一样。

我不知道为什么,Android应该刚刚重新启动Activity,为什么要保存并重新加载之后手动创建的东西?但这是另一个问题了。

因此,虽然 Fragment 的新克隆回来了,但它已经失去了“联系“到数据对象。因为该数据对象也消失了,我们有一个新的数据对象,所有用户编辑都丢失了。我想在配置更改之前保存状态并在之后重新获得它。

  1. Activity 如何确定它是否由用户启动 (应该从头开始)或者正在由系统在配置上重新创建。更改(应该重新加载 保存状态)?

  2. 之后,如何重新建立片段的连接 数据对象,以便用户可以像以前一样继续编辑 发生了?


对于大部分问题,我找到了一些好方法:

  • 使用传递给片段的参数setArguments()似乎被保留了。
  • 致电给Fragment method onAttach()是有保证的。与父级的数据交换和事件注册位于此处。家长可以是Activity或其他Fragment所以检查Fragment.getParentFragment()可能需要。
  • AsyncTaskLoader的将被保留并由系统自动重新连接。片段的数据获取/处理代码位于此处。
  • 使用自定义数据管理器类,片段不保存对数据对象的引用,而是保存它们的数字 ID,就像在数据库中一样。
  • 可以使用 Command 对象来代替直接引用的方法调用。
  • 让父活动将事件从一个片段广播到所有子片段,这些子片段可以充当独立的订阅者。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

配置更改后恢复片段的对象引用 的相关文章

随机推荐

  • 使用ripemd160和密钥对Java中的字符串进行哈希模拟php函数hash_hmac

    我正在尝试使用 Java 来哈希字符串ripemd160模拟以下 php 的输出 string string key test hash hmac ripemd160 string key outputs 37241f2513c60ae4d
  • 更新到 Android studio 3.2 时 Gradle 错误

    我将 Android Studio 版本更新至 3 2 现在我的项目面临以下错误 com novoda gradle release AndroidLibrary LibraryUsage getDependencyConstraints
  • 可以用 wincrypt 做 HMAC 吗?

    我一直在尝试使用 wincrypt cryptoapi Cryptography API Next Generation CNG 执行直接的 SHA256 HMAC 但我真的很挣扎 我的目标是 Windows 8 我找不到正确的方法或在任何
  • 淡入淡出 UITextField 文本

    我希望能够在更改文本时使文本在 uitextfield 中淡出 我试过了 UIView animateWithDuration 0 25 animations textview text 但这没有用 如果我可以访问文本字段 UILabel
  • 在 win32 richedit 中更改文本颜色

    我想在 win32 rich edit 控件中显示不同的文本颜色 这是我的测试 include
  • Facebox 轨道应用

    知道我已经安装了 jquery rails gem 如何在 Rails 应用程序中使用 Facebox 还需要进入视图的示例代码 谢谢 将 Facebox 库包含在您的 application html erb 文件中 将此代码添加到 Ja
  • 调试器不会在断点处暂停

    我遇到一个问题 希望能获得一些配置 Atom 和 Xdebug 的帮助 我可以设置断点 它们会显示在断点面板中 但该过程永远不会暂停 奇怪的是 该过程确实在异常警告时暂停 所以我知道它在某种程度上连接 但只是不在断点处暂停 我的 php i
  • Spring Boot App Engine 日志消息未显示

    我有一个 Spring Boot 应用程序 正在使用 Java 8 部署到 App Engine 标准环境 我似乎无法在云控制台的日志查看器中显示日志消息 我确实有其他日志在工作 例如端点被击中 日志记录 属性 level FINEST a
  • 使用 val().match() 方法的 Javascript 正则表达式

    我正在尝试使用以下规则验证名为phone number 的字段 第一个数字应该是 3 然后是另外 9 个数字 总共 10 个数字例如 3216549874 或者可以是 7 个数字 1234567 这里我有我的代码 if val htmlId
  • Spring中的上下文注解有什么作用?

    在Rest API设计中 我想知道上下文注释的确切目的是什么 private HttpServletRequest request Context public void setRequest final HttpServletReques
  • FormatConditions 边框位于单边上

    当第一列中的数据发生变化时 我尝试在行之间添加边框 这段代码中断于 LineStyle xlContinuous 我收到的错误是 无法设置 Border 类的 LineStyle 属性 代码中是否存在错误或执行此操作的替代方法 Sub Ad
  • wasm-pack 构建报告错误:无法编译 `net2`

    我使用尝试使用 rust wasm 提到的https rustwasm github io book game of life hello world html 全部 https rustwasm github io book game o
  • PayPal 付款标准自定义 HTML 表单; PayPal 如何知道谁在提交?

    我正在尝试获取此表格以使用 PayPal 付款标准发起捐赠
  • vbscript如何按修改日期对子文件夹中的文件进行排序(并使用文件的绝对路径打印)

    我需要创建一个vbs来按包含子文件夹的文件夹中的修改日期对可设置数量的文件 仅文件 进行排序 并使用绝对路径打印文件 如下所示 The vbs Dim MAX Dim Folder MAX 100 Folder C Test vbscrip
  • 我如何设置图像的一部分与应用栏重叠

    我把Toolbar inside CollapsingToolbarLayout使用图像创建折叠工具栏效果 以便工具栏使用容器布局响应滚动事件AppBarLayout 我想添加另一个图像 它的顶部与应用栏重叠 就像 Play 商店应用中的海
  • java nio Files.copy 抛出 Java 堆空间内存不足

    我正在尝试创建一个包含文件集合的 zip 文件 我使用 java nio Files 类来执行此操作 Files copy toBeAdded internalTargetPath StandardCopyOption REPLACE EX
  • 如何使用 GPUImage 框架实现这些过滤器链接?

    我正在尝试链接混合层并过滤它 原点 gt 纹理 1 不透明度 30 强光 gt 纹理 2 柔光 gt 级别 45 0 95 238 饱和度 100 色调 42 这是我尝试过的 编辑 此代码在下面工作 感谢您的回答 Textures GPUI
  • Android如何创建弹出窗口

    我需要创建一个带有按钮的弹出窗口和一个将关闭弹出窗口的按钮 我找到了一些教程 但不知道如何实施 我想要做什么 单击操作按钮 弹出窗口显示 当我单击关闭按钮时 弹出窗口必须关闭 教程中有一个onCreate方法 我不明白它是如何调用的 有人可
  • 我们可以更改 样式吗? [复制]

    这个问题在这里已经有答案了 我尝试更改 HTML 表单 输入类型文件 这是我的代码 HTML 表单 ID 表单
  • 配置更改后恢复片段的对象引用

    我的活动中有一个复杂的数据对象 当用户想要编辑该对象的数据时 会显示一个类似片段的浮动对话框 该片段引用了数据对象的某些部分 用户对此片段中的数据进行实时编辑 例如 一些简单的文本编辑 当用户编辑此数据时 会发生配置更改 著名的方向更改 更