使用Android操作栏和标签&片段

时间:2014-08-04 13:41:42

标签: android android-fragments tabs android-actionbar

pttI刚刚开始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.TabListenerSectionsPagerAdapterViewPager的设置是否实用?我似乎有一些与其他解决方案合作的教程,即http://www.cs.dartmouth.edu/~campbell/cs65/lecture08/lecture08.html

2)PlaceholderFragment是否可以选择使用它的构造函数模式,还是应该为每一个创建自己的片段类?

3)当触发另一个Tab中的某个操作时,我需要更新摘要选项卡的UI。我想在显示标签时我应该这样做。然而,根据描述的设置,我无法找到明显的(至少对我来说)这样做的方式。是否更好地将引用存储到每个选项卡UI或片段全局并直接访问它?我认为适配器从内存中擦除它的碎片,有时会重新加载它们。

感谢您清除我:)

1 个答案:

答案 0 :(得分: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.

希望它有所帮助!!