Fragment Usage

使用Fragment实现代码与布局的复用

源码是 Androidbase / Fragment / FragmentExample / 中的DynamicFragment相关的代码。

实现的效果:在手机中处理title与content显示在不同的界面,在平板中左边显示title,右边显示content。
查看效果图

实现的思路: 在手机中加载的布局和平板加载的布局肯定不同,要分别定义不同的布局。在手机中点击title,跳转到另一界面显示content,可以使用两个fragment分别让activity关联。在平板中不涉及界面的跳转,可以在布局文件中使用**<fragment>**标签来定义。

实现的步骤:

  1. 定义不同的布局,在本例中定义了两个布局文件activity_dynamic_fragment,一个是在layout中定义(用于手机使用),一个是layout-large中定义(用于平板)。
  2. 定义title的fragment和content的fragment
  3. 在Activity的onCreate()方法中content相关的view是否存在,不存在就是手机设备要把title的fragment加到activity中。
  4. title点击处理使用了回调的方式,手机的处理方式是添加content的fragment,而平板的处理方式是获取content的fragment来更新。

使用Fragment实现滑动的效果

源码是在**Androidbase / Fragment / FragmentExample /**中的**ViewpagerFragment**相关的代码

  • 简单实现方式

    1. 创建一个Fragment
    2. 在activity布局文件使用V4支持包中的ViewPager标签来定义viewpager控件。
    3. 在activity中获取viewpager控件,并调用setAdapter(),其参数为PagerAdapter,对于使用fragment的viewpager有两个类可以继承,实现方法比较少,分别是FragmentPagerAdapter和FragmentStatePagerAdapter.
  • 带有指示器的Viewpager

    1. 创建一个Fragment
    2. 在activity布局文件使用V4支持包中ViewPager标签来定义viewpager控件,并添加V4支持包中的PagerTabStrip
    3. 在activity中获取viewpager控件并调用setAdapter(),参数继承FragmentPagerAdapter或者FragmentStatePagerAdapter,并覆写其getPageTitle()方法的类对象 。

    NOTICE: Viewpager默认的情况下,滑动后的pager可能会被销毁,一般少量pager时使用FragmentPagerAdapt(一般3个左右)子类 而有许多pager时会使用FragmentStatePagerAda子类pt,因为它会保存状态。

  • 在fragment中嵌套Viewpager

    1. fragment的布局文件中使用android.support.v4.view.ViewPager标签来定义Viewpager控件。
    2. 在fragment中获取viewpager控件,并调用setAdapter()
    3. 把fragment添加到activity的一个viewgroup中

    **NOTICE:**在fragment中viewpager设置fragment使用的FragmentManager要通过getChildFragmentManager()来获取

参考资料

参考文档1
参考文档2

updatedupdated2020-06-132020-06-13