Fragment 碎片

  • 一, Fragment是什么?

    Android 3.0以后出现的 Api11 以上 Activity的组成部分

    Fragment(小的Activity)

    Fragment可以显示 UI内容 可以和用户进行交互

    Fragment的主要作用:提高代码的重用性 和用户体验

    可以对Activity组件 进行分组和模块化的管理

    Fragment 有自己的生命周期 可以接受和处理用户的事件

    可以在Activity中 添加,替换和移除 Fragment

    注意:1,Fragment必须依附Activity

    2,一个Activity可以包含多个Fragment,一个Fragment可以

    被多个Activity使用

  • 二, 如何创建Fragment

    1,创建一个类继承Fragment

    2,得到Fragment生命周期方法 onCreateView() (展示UI)

  • 三, Fragment 的显示方式

    1,静态展示Fragmeng(在布局中直接添加Fragment)

    1,在布局中标签

    2,id Fragmeng的唯一标识

    3,name 添加的是那个Fragmeng

    2,动态添加Fragment(在布局中添加一个容器,动态代码将Fragmeng添加到容器)

    1,在布局中添加容器

    2,在逻辑代码中 获取FragmengManage

    3,通过Fragmeng的事务

    4,Fragmeng的事务 将Fragmeng添加相应的容器

    5,Fragment的事务 提交

  • 四,Activity向Fragment传值

    Activity:(setArguments(bundle))

    //传值 ActivityToFragment

    Bundle bundle = new Bundle();

    bundle.putString(“msg”, “今天开会”);

    //传值

    myFragment.setArguments(bundle);

    Fragment:(getArguments()

    //获取传递过来的值

    Bundle bundle = getArguments();

    //获取值

    String msg = bundle.getString(“msg”);

  • 五, Fragment 向Activity传值 (接口回调)

    1,创建一个回调接口

    2,在Activity中实例化回调接口

    3,将实例化的接口传给Fragment (getActivity)

    4,在Fagment中 将值传递给Activity

  • 六, Fragment向Fragment传值

    1,setArgument()

    //传值

    MyFragment2 myFragment2 = MyFragment2.newInstance(bundle);

    MyFragment2 myFragment2 = new MyFragment2();
    myFragment2.setArguments(bundle);

    2,在Fragment1中找到Fragment2对象 通过对象调方法

    通过Fragment的id 获取Fragment2的对象

    Fragment2 fragment2 = (Fragment2) getFragmentManager().findFragmentById(R.id.rightfragment);

    fragment2.setTextValues(msg);

    3,在Fragment1中找到Fragment2中的控件

    TextView tv = (TextView) getFragmentManager().findFragmentById(R.id.rightfragment).getView().findViewById(R.id.tv_show);

    TextView tv = (TextView) getActivity().findViewById(R.id.tv_show);

    tv.setText(msg);

  • 七, Fragment的生命周期 11个生命周期方法



    第一次打开app

    09-08 06:05:55.590: E/MainActivity(3786): ==onCreate==

    09-08 06:05:55.590: E/MyFragment(3786): ==onAttach==

    09-08 06:05:55.590: E/MyFragment(3786): ==onCreate==

    09-08 06:05:55.600: E/MyFragment(3786): ==onCreateView==

    09-08 06:05:55.600: E/MyFragment(3786): ==onActivityCreated==

    09-08 06:05:55.600: E/MainActivity(3786): ==onStart==

    09-08 06:05:55.600: E/MyFragment(3786): ==onStart==

    09-08 06:05:55.600: E/MainActivity(3786): ==onResume==

    09-08 06:05:55.610: E/MyFragment(3786): ==onResume==

按Home键时

09-08 06:07:08.211: E/MyFragment(3786): ==onPause==

09-08 06:07:08.211: E/MainActivity(3786): ==onPause==

09-08 06:07:10.090: E/MyFragment(3786): ==onStop==

09-08 06:07:10.090: E/MainActivity(3786): ==onStop==

重新返回到界面

09-08 06:08:11.391: E/MainActivity(3786): ==onRestart==

09-08 06:08:11.391: E/MainActivity(3786): ==onStart==

09-08 06:08:11.391: E/MyFragment(3786): ==onStart==

09-08 06:08:11.391: E/MainActivity(3786): ==onResume==

09-08 06:08:11.411: E/MyFragment(3786): ==onResume==

按返回键时

09-08 06:09:12.440: E/MyFragment(3786): ==onPause==

09-08 06:09:12.440: E/MainActivity(3786): ==onPause==

09-08 06:09:14.110: E/MyFragment(3786): ==onStop==

09-08 06:09:14.110: E/MainActivity(3786): ==onStop==

09-08 06:09:14.110: E/MyFragment(3786): ==onDestroyView==

09-08 06:09:14.110: E/MyFragment(3786): ==onDestroy==

09-08 06:09:14.110: E/MyFragment(3786): ==onDetach==

09-08 06:09:14.110: E/MainActivity(3786): ==onDestroy==

  • 八, V4包中的Fragment使用

    V4支持Android1.6

    • 使用;

      • 1,创建一个类 继承V4包的Fragment
      • 2,修改Activity 变成FragmentActivity
      • 3,获取管理者对象 V4 getSupportFragmentManager() 获取事务 V4

        • note:用V4的Fragment 全部改成V4的 用app包的 全部用app包
  • 九, listFragment的使用

    ListFragment 里面封装了 ListVIew : id为: android:id=”@id/android:list”

设置数据的方法 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)

点击监听的方法 public void onListItemClick(ListView l, View v, int position, long id)

  • 十,回退栈

.addToBackStack(null)//回退栈 参数:标记 如果没有标记 null

.commit()

案例

Day14_Fragment_demo1:静态注册

Day14_Fragment_demo2:动态注册

14 Fragment 碎片总结的更多相关文章

  1. 14 fragment 创建

    静态展示 注意 静态的开始进入界面的生命周期和动态的不同 详情:14 fragment注意点 步骤一:创建一个类继承 Fragment 代码类型一: package com.fmy.demo1; im ...

  2. Fragment碎片

    布局文件中添加碎片 1.在onCteate()方法中调用inflater.inflate()加载Fragment布局 2.在xml的<fragment>中需要显示指明碎片名称(androi ...

  3. Fragment碎片的创建和动态更新

    Fragment,在平板应用中较为参见,把视图分为两个甚至多个模块. 一,一个简单的fragment 1.创建两个局部文件,用于等待被调用 (1)left_fragment (2)right_frag ...

  4. fragment 碎片整理

    activity_m1.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xm ...

  5. Android Fragment(碎片)的使用

    简介 在Android中Fragment为一种可以嵌入活动中的UI片段.能让程序更加合理地利用大屏幕的空间. 使用方法 1.我们首先新建的一个onefragment.xml文件. <?xml v ...

  6. Android06-Fragment碎片

    ¨Fragment简介 ¨Fragment生命周期 ¨动态加载碎片Fragment Manager的使用   1.Fragment表示Activity中的一种行为或者一部分用户界面. 可以将Fragm ...

  7. Android Fragment碎片

    什么是碎片? 碎片(Fragment)是一种可以嵌入在活动当中的UI片段,它能让程序更加合理和充分地利用大屏幕的空间,因而在平板上应用的非常广泛.可以把Fragment当成Activity一个界面的一 ...

  8. Android之Fragment(碎片)方方面面

    Fragment简介碎片(Fragment)是一种可以嵌入到活动当中的UI片段,它能让程序更加合理和充分的利用大屏幕的空间. Fragment的生命周期 它与Activity生命周期的关系: 可以看到 ...

  9. android UI:Fragment碎片

    碎片(Fragment) 嵌入与活动中的UI片段,为了合理的分配布局而存在,这是我的简单理解.多用于兼顾手机与平板的UI,也适用于灵活高级的UI制作. Demo 简单的按键切换两片不同的Demo 新建 ...

随机推荐

  1. [HNOI2012]永无乡

    题目描述 永无乡包含 n 座岛,编号从 1 到 n,每座岛都有自己的独一无二的重要度,按照重要度可 以将这 n 座岛排名,名次用 1 到 n 来表示.某些岛之间由巨大的桥连接,通过桥可以从一个岛 到达 ...

  2. ●UOJ58 [WC2013]糖果公园

    题链: http://uoj.ac/problem/58题解: 树上带修莫队. 每个块的大小为$n^{\frac{2}{3}}$,在dfs时,把点集分为若干块. 然后类似序列带修莫队,三个关键字:be ...

  3. Python中def及lambda的功能介绍

    函数def及lambda的功能介绍 1. def函数的功能介绍 1. 函数的参数 无参数函数 格式:def func_name(): '''__doc__'''#函数的说明文档(内容) express ...

  4. windows server 2008 R2 NPS(网络连接策略服务)设置radius,实现telent登陆交换机路由器权限分配

    windows2008NPS(网络连接策略)设置radius 实现telent登陆交换机路由器权限分配 转载请说明出处 一,安装 首先在08中添加服务器角色网络策略和访问服务(Network Poli ...

  5. js遍历 for-of

    for-of遍历 entries() 返回一个遍历器对象,用来遍历[键名, 键值]组成的数组.对于数组,键名就是索引值:对于 Set,键名与键值相同.Map 结构的 Iterator 接口,默认就是调 ...

  6. junit4.9测试用例 spring测试用例 Assert 注解

    junit4.9测试用例 测试基类 import org.junit.runner.RunWith; import org.springframework.test.context.ContextCo ...

  7. centos 挂载ntfs格式的移动硬盘

    经查找资料发现,linux也是可以支持ntfs格式分区的,只是需要安装ntfs-3g插件. CentOS挂载ntfs移动硬盘的具体步骤: 1 安装fuse. 下载fuse-2.9.3.tar.gz   ...

  8. python中的printf:%号拼接字符串和format函数

    在C语言中,我们使用printf("%s","hello")这种形式进行字符串的拼接 在python中,进行这样的拼接有两种实现方式,分别是%号拼接以及使用fo ...

  9. 下篇:python的基本数据类型以及对应的常用方法(列表、元组、字典、集合)

    为了日后便于查询,本文所涉及到的所有命令集合如下: python中的基本数据类型有数字.字符串.布尔值.列表.元组.字典.就像每一个职业有自己特定的技能,比如医生能看病,农民能种田,每种数据类型也有属 ...

  10. ABP文档笔记系列

    ABP文档笔记 - 模块系统 及 配置中心 ABP文档笔记 - 事件BUS ABP文档笔记 - 数据过滤 ABP文档笔记 - 规约 ABP文档笔记 - 配置.设置.版本.功能.权限 ABP文档笔记 - ...