gpt4 book ai didi

android - Android 上 fragment 之间的通信

转载 作者:太空狗 更新时间:2023-10-29 16:41:31 24 4
gpt4 key购买 nike

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

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

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 及其监听器...

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 中。例如,我希望两个 fragment 都可以访问一个 ArrayList 变量,所以就像我说的那样,我可以更新列表。我很想听听您能提供的任何帮助。我很想知道 Otto API 如何为这样的事情工作,但我并不挑剔!

最佳答案

在某些答案中,建议将 ArrayList 置于单例中,但这并不能真正解决您的问题,对吗?当然,您可以从任何您喜欢的地方访问它,但它无法帮助您保持两个不同的 fragment 同步,这两个 fragment 都使用 arraylist。

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

  1. 创建 ArrayList Observable (检查 ObservableArrayList )并让 fragment Observe用于更改的 ArrayList。

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

关于android - Android 上 fragment 之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17040649/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com