Android Fragment用法的讲解

碎片,它的出现是为了更好展示UI的设计,让程序更加得到充分的展示。Fragment的出现,如微信的额主界面包含多个Fragment,使得微信功能更加简洁明了。

Fragment组件

FragmentAndroid 3.0 的时候被引入的,主要目的是为了给大屏幕(如平板电脑)添加动态和灵活的UI支持。利用Fragment实现更好的用户体验。

Fragment加载

  1. 静态加载:添加FragmentActivity布局中,以xml的形式。
  2. 动态加载:
<LinearLayout
android:id="@+id/layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
</LinearLayout>
//动态加载
MyFragment fragment = new MyFragment(); FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction beginTransaction = fragmentManager.beginTransaction();
beginTransaction.add(R.id.layout,fragment);
beginTransaction.addToBackStack(null);
beginTransaction.commit();

第一步,获取一个FragmentManager对象,getFragmentManager()方法,beginTransaction()

第二步,beginTransaction.add()add()方法,容器视图资源Id

第三步,调用addToBackStack(true)方法,目的为了允许用户通过按下返回按键返回到前一个Fragment状态,beginTransaction.commit()提交。

FragmentPagerAdapter和FragmentStatePagerAdapter

FragmentPagerAdapter适用于页面较少的情况,把UI分离,并没有回收,FragmentStatePagerAdapter适用于页面较多的情况,每次切换会回收内存的。

Fragment生命周期

Fragment有四种状态:运行状态,暂停状态,停止状态,销毁状态。

图片来源官方:

onAttach():

一旦片段与其活动相关联就被调用;

onCreate():

片段被调用创建;

onCreateView():

创建并返回相关的视图结构;

onActivityCreated():

表示活动已被创建完成了,这里是activity创建成功;

onStart():

片段对用户可见;

onResume():

片段与用户开始交互;

onPause():

片段与用户不再交互;

onStop():

片段不再对用户可见;

onDestroyView():

销毁与其View相关资源;

onDestroy():

销毁一切片段;

onDetach():

片段与其活动不再相关联。

打开界面:onCreate() -> onCreateView() -> onActivityCreated()->onStart()-> onResume()

Home:onPause() -> onStop()

回到界面: onStart() -> onResume()

回退: onPause() -> onStop() -> onDestroyView() -> onDestroy()-> onDetach()

Fragment通信

MyFragment myFragment = (MyFragment)fragmentManager(). findFragmentById(R.id.layout);

MainActivity activity=(MainActivity)getActivity();

Fragment方法

  1. replace()FragmentManager的方法。
  2. add()添加
  3. remove()删除

结语

  • 本文主要讲解 Android Fragment用法知识点的讲解

  • 下面我将继续对Java、 Android中的其他知识 深入讲解 ,有兴趣可以继续关注

  • 小礼物走一走 or 点赞

Android Fragment用法知识点的讲解的更多相关文章

  1. Android Service用法知识点的讲解

    Android Service 学习Service相关知识点: android service 的基础知识,生命周期,service分类,运行地点(本地服务,远程服务),运行类型(前台服务,后台服务) ...

  2. Android Fragment用法详解(2)--动态添加Fragment

    在上一篇文章<Android Fragment用法详解(1)--静态使用Fragment>我们讲解了Fragment的最简单的用法.这次我们来说一说Fragment复杂一丢丢的用法.在代码 ...

  3. android Fragment 用法小结

    Fragment 是android 3.0引入的新API,是作为Activity的子模块,必须嵌入Activity才能使用. Activity 与 Fragment的关系: 一.依附性: 1. Fra ...

  4. Android Fragment用法详解(1)--静态使用Fragment

    先说明一下,本例子是运行在Android Studio下面的.同样的代码复制粘贴到Eclipse运行却会报错.具体原因我也没有细查.知道的哥们,留言通知下呗. Fragment,也就是碎片,本意是为了 ...

  5. android Fragment用法

    Fragment常用的三个类:android.app.Fragment 主要用于定义Fragmentandroid.app.FragmentManager 主要用于在Activity中操作Fragme ...

  6. Android Fragment用法之给Activity创建事件回调

    在某些案例中,可能需要Fragment与Activity共享事件.在Fragment内部定义一个回调接口是一个好方法,并且规定由持有它的Activity实现这个回调方法.当Activity通过接口接受 ...

  7. Android Fragment和FragmentActivity区别和用法

    Android Fragment是Android4.0以上才有的:而FragmentActivity是为了兼容4.0以下版本的Fragment使用的. 所以如果你想兼容4.0以下Android版本使用 ...

  8. Android编程权威指南笔记3:Android Fragment讲解与Android Studio中的依赖关系,如何添加依赖关系

    Android Fragment 当我在学习时,了解了Fragment词汇 Fragment是一种控制器对象,我就把所了解的简单说一下.activity可以派fragment完成一些任务,就是管理用户 ...

  9. 【Android自学日记】【转】Android Fragment 真正的完全解析(下)

    上篇博客中已经介绍了Fragment产生原因,以及一些基本的用法和各种API,如果你还不了解,请看:Android Fragment 真正的完全解析(上). 本篇将介绍上篇博客提到的:如何管理Frag ...

随机推荐

  1. mvc中view与controll之间传递参数时,可以使用url进行传递

    mvc中view与controller之间传递参数时,可以使用url进行传递,但是在url的地址中需要加上“id=123”这样的东西才行. 具体如代码: window.location.href = ...

  2. 使用List需要注意的点

    目录 1. 概述 2. Arrays.asList(); 2-1. 产生不可操作的集合 2-2. 需要传入对象数组而不是基本类型数组 3. arrayList.subList(); 3-1. subL ...

  3. 为datagrid、treegrid增加右键表头菜单,用于显示或隐藏列,注意:冻结列不在此菜单中

    var createGridHeaderContextMenu = function(e, field) { e.preventDefault(); var grid = $(this);/* gri ...

  4. typedef typename

    所以根据上述两条分析,  typedef typename RefBase::weakref_type weakref_type; 语句的真是面目是: typedef创建了存在类型的别名,而typen ...

  5. Node.js 初识1

    测试:让Node.js运行脚本 1.创建一个脚本 js1.js console.log('测试'); 2.cmd界面 运行脚本

  6. vivo手机,自带世界之窗浏览器,sessionStorage设置的值为null

    最近遇到一个小问题 用vivo手机自带浏览器,每次跳转到一个新页面都是重新打开一个webpage,导致sessionStorage设置的值都没了. 所以开发移动端网页时,谨慎使用sessionStor ...

  7. Lock关键字

    public abstract class CountBase { public abstract void Increment(); public abstract void Decreament( ...

  8. c++ 中的智能指针实现

    摘要:C++11 中新增加了智能指针来预防内存泄漏的问题,在 share_ptr 中主要是通过“引用计数机制”来实现的.我们今天也来自己实现一个简单的智能指针: // smartPointer.cpp ...

  9. HDU6446 Tree and Permutation(树上DP)

    传送门:点我 Tree and Permutation Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (J ...

  10. Python+Selenium学习--下载文件

    场景 webdriver 允许我们设置默认的文件下载路径.也就是说文件会自动下载并且存在设置的那个目录中,下面以firefox及chrome为例 代码 Firefox下载 为了让Firefox浏览器能 ...