【问题标题】:Use Android Action Bar with Tabs & Fragments使用带有标签和片段的 Android 操作栏
【发布时间】:2014-08-04 13:41:42
【问题描述】:

ptt我刚开始进行 Android 开发,有些东西让我感到困惑——尤其是来自 iOS 的东西。作为一名 iOS 开发人员,我通常可以使用 IDE 为我创建的样板代码,但是由于我现在尝试使用 Android ActionBar、Tab Mode 和 Fragments,许多教程似乎与创建的 Android 代码不同。所以我问自己,对于我的用例,正确的解决方案是什么。样板代码包括:

TabActivity extends Activity implements ActionBar.TabListener
SectionsPagerAdapter
ViewPager
PlaceholderFragment extends Fragment

我有以下问题:

1) 使用Activity implements ActionBar.TabListener、SectionsPagerAdapter 和ViewPager 的设置是否实用?我似乎有很多教程与其他解决方案一起使用,即http://www.cs.dartmouth.edu/~campbell/cs65/lecture08/lecture08.html

2) PlaceholderFragment 带有它的标签构造器模式是否可取,或者我应该为每个标签创建自己的片段类?

3) 当触发另一个选项卡中的某些操作时,我需要更新摘要选项卡的 UI。我想我应该在显示选项卡的那一刻做这个。但是,通过所描述的设置,我找不到明显的(至少对我而言)方法来做到这一点。全局存储对每个选项卡 UI 或 Fragment 的引用并直接访问它会更好吗?我认为适配器会从内存中擦除其片段,并且有时会重新加载它们。

感谢您为我解决这个问题:)

【问题讨论】:

标签: android android-fragments tabs android-actionbar


【解决方案1】:

1) 看看 Android 开发者页面:

1.1)http://goo.gl/rHCZH8

1.2)http://goo.gl/mB7Rs

1.3)http://goo.gl/pfeKA

2) 如果我没记错的话,您可能会将 PlaceholderFragment 作为内部类。我建议您为每个片段创建自己的片段类。 PlaceholderFragment 只是一个用于演示提议的片段工厂。

3) 我会在触发操作后立即执行此操作,而不是在您切换到该选项卡时执行此操作。原因是您节省了时间,用户不会注意到任何加载或等待时间。但这实际上取决于用户浏览该特定选项卡的频率。

实现此目的的一种方法是将消息从一个片段发送到另一个片段。我这样做的方式是与当地广播公司合作。真的很容易使用。

基本上,当您从一个特定片段触发操作时,您会发送一条本地广播消息,该消息由另一个片段接收。在那一刻,您可以在第二个片段中调用您想要的任何方法,但一定要在后台线程中执行(例如 asyncTask)。

这里有一些关于本地广播的有用链接:

1) http://goo.gl/awPYA1

2) http://goo.gl/zkfOSY

3)http://goo.gl/Xi6jJL

专业提示:当您只有几个标签(例如 3/4)时使用操作栏/导航标签/片段非常有用的提示是避免每次离开和回来时重新加载它们给他们。例如,在您的摘要选项卡中,您可能会处理一些数据以得出摘要数据。数据数据应在每次数据更改时进行处理。在 viewpager 的默认配置下,每次滑动 2 个标签时,片段将被销毁并重新创建。

为避免这种情况,您必须这样做:

viewPager.setOffscreenPageLimit(C_FRAGMENTS_TO_KEEP_IN_MEMORY);

C_FRAGMENTS_TO_KEEP_IN_MEMORY 是要保留在内存中的当前选定选项卡右侧和左侧的选项卡数。默认值为 1。

希望对你有帮助!!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-13
    • 1970-01-01
    • 1970-01-01
    • 2012-11-18
    • 1970-01-01
    • 2015-05-04
    • 1970-01-01
    相关资源
    最近更新 更多