我正在尝试构建一个具有两个选项卡的 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 的内容保持同步:
制作数组列表可观察的 (check 可观察数组列表)并让片段ObserveArrayList 进行更改。
利用事件总线(例如Otto)并让单例或 MainActivity(取决于您放置 ArrayList 的位置)在 arraylist 更改时在总线上发布更新事件,并让 Fragments 订阅事件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)