【问题标题】:Keep values and communicate them while changing of fragments在改变片段的同时保持价值观并传达它们
【发布时间】:2017-12-02 04:03:51
【问题描述】:

我有 2 个片段与底部导航视图链接。

  • 在片段 1 上,有一个复选框
  • 在片段 2 上,有一个微调器

我希望当我更改片段时,如果未选中复选框,则禁用微调器。此外,当我回到第一个片段时,复选框状态保持不变,并且微调器也选择了第二个片段的项目。

【问题讨论】:

    标签: android android-fragments checkbox


    【解决方案1】:

    在移动到片段 2 之前。使用 mainactivity 中的 findfragmentbyid() 找到片段 1 的引用并检查复选框状态并将适当的参数数据发送到片段 2 并在片段 2 中获取该参数数据以禁用或启用微调器。最后,您需要在片段之间执行通信。阅读这篇官方文章。这很值得。 https://developer.android.com/training/basics/fragments/communicating.html

    【讨论】:

    • 这也可以通过将每个片段的引用保存为类中的字段来完成。这意味着您不需要每次都查找片段。
    • 我同意你的看法
    【解决方案2】:

    一种选择是使用捆绑包setArguments() 在每个片段之间发送数据。不利的一面是这些值仅在应用程序运行时可用。如果您希望应用程序的状态更加持久,则可以使用SharedPreferences 或数据库将应用程序的状态永久存储在磁盘上。每个片段都会在必要时读取和写入数据。有关详细信息,请参阅 Android 文档中的Storage Options

    【讨论】:

    • 我尝试使用共享首选项,但没有成功。我在调用 onPause() 时保存了。这是正确的事件吗?
    • @Tim241 您应该发布一个新问题,显示您尝试过的内容。首先,请务必阅读 How to Askminimal reproducible example,了解如何提出一个能吸引您正在寻找的答案的好问题。
    • 事实上,sharedPreferences 不起作用,因为我忘了提交...谢谢您的回答!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-23
    • 1970-01-01
    • 2022-11-21
    • 2014-10-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多