Android 上 Fragment 之间的通信

2023-12-14

我正在尝试构建一个具有两个选项卡的 Android 应用程序,一个用于文本字段/按钮和 TreeMenu(其中每个元素都有一个与其关联的复选框),另一个用于列表。我也在使用 ActionBarSherlock。我已经在单个主要活动中成功编写了程序,但很难弄清楚如何划分这个原始活动以与我需要为每个选项卡创建的两个新片段实例相对应。此外,每次在第一个选项卡中添加项目时(无论是选中还是添加到文本字段),第二个窗口中的列表都应该识别更新。

要构建操作栏,我可以这样做......

ActionBar actionbar = getSupportActionBar();
actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
actionbar.setTitle("AppName");

要创建选项卡..

 ActionBar.Tab Frag1Tab = actionbar.newTab().setText("InputTab");
 ActionBar.Tab Frag2Tab = actionbar.newTab().setText("ListTab");

要创建每个选项卡下的片段及其侦听器...

Fragment Fragment1 = new Fragment_1();
Fragment Fragment2 = new Fragment_2();
Frag1Tab.setTabListener(new MyTabsListener(Fragment1));
Frag2Tab.setTabListener(new MyTabsListener(Fragment2));

要将它们添加到操作栏...

actionbar.addTab(Frag1Tab);
actionbar.addTab(Frag2Tab);

所有这些都出现在我的 MainActivity 中。例如,我希望两个片段都可以访问 ArrayList 变量,这样,就像我说的,我可以更新列表。我很想听听您能提供的任何帮助。我很想知道 Otto API 如何用于类似的事情,但我并不挑剔!


在一些答案中,建议将 ArrayList 放入单例中,但这并不能真正解决您的问题,不是吗?当然,您可以从任何您喜欢的地方访问它,但是它不能帮助您保持两个不同的片段(都使用数组列表)同步。

首先按照建议将 ArrayList 放入单例中或放入 MainActivity 中。完成后,您至少有两个选项可以使片段与 ArrayList 的内容保持同步:

  1. 制作数组列表可观察的 (check 可观察数组列表)并让片段ObserveArrayList 进行更改。

  2. 利用事件总线(例如Otto)并让单例或 MainActivity(取决于您放置 ArrayList 的位置)在 arraylist 更改时在总线上发布更新事件,并让 Fragments 订阅事件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 上 Fragment 之间的通信 的相关文章

随机推荐

  • 通过C连接oracle DB

    我想在Windows操作系统中使用C语言连接oracle数据库 但我不知道如何开始 以及先决条件是什么 任何人都可以为我提供任何帮助 教程或示例代码吗 谢谢 http www dreamincode net forums topic 307
  • JavaFX:同时有 2 个独立窗口

    我想一次创建2个独立的窗口 一个窗口将能够保存可观察的列表 另一个窗口将显示所选列表对象的属性 我正在尝试将列表视图创建为通用列表 并将其与特定于对象的窗口 例如客户属性 啤酒属性 商店属性 结合起来 简而言之 如果用户单击 客户 它将显示
  • Worklight 和 jquery:我想要获取 xml 中存在的链接并使用行动态标记它们?

    上面附加了我的图像 该图像将其提取到远程服务器 其显示为内容页面中的行 我在同一个 xml 中有链接 我想将该链接标记为该行 然后单击它 用户应该加载页面 我怎样才能获取它 function displayFeeds items var u
  • 如何从文本文件中读取单词并将其添加到字符串数组中?

    这是我的函数 调用方式为 getWord words void getWord char words MAXWORDLENGTH int i char newWord MAXWORDLENGTH FILE file file fopen w
  • 如何使用 android 列出 ftp 目录?

    已解决 如何获取 ftp 服务器上的文件和文件夹列表 我知道如何连接和上传文件 但不知道如何获取目录列表 try FTPClient ftpClient new FTPClient ftpClient connect InetAddress
  • 如何检索cameraID并使用setTorchMode?

    Android M 最近问世了 它现在有一个内置的相机灯功能 称为 setTorchMode 我很好奇它是如何工作的 因为参数是 字符串cameraID 布尔值真 假 布尔值显然决定了灯是打开还是关闭 但是如何获取cameraID呢 我知道
  • 如何运行 JAR 文件

    我创建了一个像这样的 JAR 文件 jar cf Predit jar 我通过双击这个 JAR 文件来运行它 它不起作用 所以我从 DOS 提示符下运行它 如下所示 java jar Predit jar 它引发了 无法加载主类 异常 所以
  • ffmpeg:转换前后的视频长度不同

    我有一组 mov 视频 需要转换为 mp4 格式 我正在使用 ffmpeg 并运行以下命令 ffmpeg i Banking mov vsync async sameq ac 1 ab 64k ar 44100 Banking mp4 输入
  • 覆盖从 NPM @Types 下载的 V2.2.2 中的 TypeScript 类型

    我正在使用该组件反应路由器引导程序和定义来自绝对打字 我的问题是下载的定义与组件不匹配 我创建了一个拉取请求来解决这个问题 但由于我不知道什么时候会修补它 所以我必须覆盖它 我不能只编辑位于的类型定义文件node modules types
  • 使用 MySqlConnector for .NET 是否完全支持 TransactionScope 对象?

    我正在编写单元测试 技术上是集成测试 因为我正在连接到数据库 并且我想在测试内的事务中创建记录 并在测试完成后回滚所有数据库修改 我的想法是 我将通过一个 API 调用创建另一个 API 调用希望在数据库中找到的记录 我有以下有效的代码 s
  • CSVHelper BadDataFound 在有效的 csv 中

    我们的客户开始报告从 CSV 文件导入数据时出现的错误 看到 csv 文件后 我们决定从自定义 CSV 解析器切换到 CSVHelper 但 CSV Helper 无法读取一些有效的 CSV 文件 用户可以将任何 csv 文件加载到我们的应
  • 当相关子项发生更改时,SQLAlchemy 会更新父项

    我正在尝试将一个实体建模为一个或多个一对多关系 这样它就是last modified属性更新 当 添加或删除子项 一个孩子被修改 实体本身被修改 我整理了以下最小示例 class Config Base tablename config I
  • Android 5 中的意图操作调用

    我有这段代码 在 Android 4 4 及更早版本中运行良好 Intent intent new Intent Intent ACTION CALL intent setPackage com android phone intent s
  • 在 Oracle APEX v4.2.2 中通过 Ajax 调用 Oracle 函数进行现场验证

    我正在使用 Oracle 11g 和 Oracle Apex v4 2 2 我想知道如何在动态操作中通过 ajax 调用来调用 Oracle 函数的最佳方式 我基本上有一个带有六个参数的函数 它们返回 INVALID 或 VALID 的结果
  • asm更改cmd背景颜色

    我编写了更改文本颜色的部分 但我找不到更改背景颜色的方法 此代码用于 tasm 汇编 model small stack 256 data ent db 0ah 0dh array db 2 4 5 6 db 7 8 9 5 db 1 2
  • SSIS 数据分析任务编辑器返回错误代码

    我正在尝试使用 Visual Studio 2017 运行 SSIS 工具 数据分析任务 可以看到流程运行成功 但是 当我单击 打开配置文件查看器 时 会出现此错误代码 数据配置文件查看器遇到意外错误 必须 关闭 错误消息是 无法加载文件或
  • 将二进制转换为 ASCII,反之亦然

    使用此代码获取字符串并将其转换为二进制 bin reduce lambda x y 256 x y ord c for c in hello 0 这输出 0b110100001100101011011000110110001101111 如
  • 如何将 XML 转换为 java 值对象?

    有哪些开源库可以将 XML 转换为 java 值对象 在 Net 中 有一种方法可以通过 xml 序列化和属性轻松实现此目的 我想象java中有一些并行的东西 我知道如何使用 DOM 或 SAX 解析器来做到这一点 但我想知道是否有更简单的
  • 如何在 Windows Vista/7/8 上以编程方式启动 SFC?

    我一直在努力解决这个问题克里斯 艾弗森 Chris Iverson 在 Stackoverflow 上提出的另一个问题 我想启动SFC the 系统文件检查器工具 以编程方式 它适用于 Windows XP private void Run
  • Android 上 Fragment 之间的通信

    我正在尝试构建一个具有两个选项卡的 Android 应用程序 一个用于文本字段 按钮和 TreeMenu 其中每个元素都有一个与其关联的复选框 另一个用于列表 我也在使用 ActionBarSherlock 我已经在单个主要活动中成功编写了