Andro的id Fragment 的使用.doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Andro的id Fragment 的使用

Android Fragment 的使用 Fragment 简介 作为 Activity 界面的一部分,Fragment 的存在必须依附于 Activity,并且与 Activity 一样,拥有自己的生命周期,同时处理用户的交互动作。同一个 Activity 可以有一个或多个 Fragment 作为界面内容,并且可以动态添加、删除 Fragment,灵活控制 UI 内容,也可以用来解决部分屏幕适配问题。 另外,support v4 包中也提供了 Fragment,兼容 Android 3.0 之前的系统(当然,现在 3.0 之前的系统在市场上已经很少见了,可以不予考虑),使用兼容包需要注意两点: Activity 必须继承自 FragmentActivity; 使用 getSupportFragmentManager() 方法获取 FragmentManager 对象; 生命周期 作为宿主 Activity 的一部分,Activity 拥有的大部分生命周期函数在 Fragment 中同样存在,并与 Activity 保持同步。同时,作为一个特殊情况的存在,Fragment 也有一些自己的生命周期函数,如 onAttach()、onCreateView() 等。 至于 Activity 与 Fragment 之间生命周期函数的对应同步关系,来自 GitHub 的 xxv/android-lifecycle 项目用了一幅图完美地予以展示: 创建实例 像普通的类一样,Fragment 拥有自己的构造函数,于是我们可以像下面这样在 Activity 中创建 Fragment 实例: MainFragment mainFragment = new MainFragment(); 如果需要在创建 Fragment 实例时传递参数进行初始化的话,可以创建一个带参数的构造函数,并初始化 Fragment 成员变量等。这样做,看似没有问题,但在一些特殊状况下还是有问题的。 我们知道,Activity 在一些特殊状况下会发生 destroy 并重新 create 的情形,比如屏幕旋转、内存吃紧时;对应的,依附于 Activity 存在的 Fragment 也会发生类似的状况。而一旦重新 create 时,Fragment 便会调用默认的无参构造函数,导致无法执行有参构造函数进行初始化工作。 好在 Fragment 提供了相应的 API 帮助我们解决这个问题。利用 bundle 传递数据,参考代码如下: public static OneFragment newInstance(int args){ OneFragment oneFragment = new OneFragment(); Bundle bundle = new Bundle(); bundle.putInt(someArgs, args); oneFragment.setArguments(bundle); return oneFragment; } @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); Bundle bundle = getArguments(); int args = bundle.getInt(someArgs); } 嵌入方式 Activity 嵌入 Fragment 分为布局静态嵌入和代码动态嵌入两种。前者在 Activity 的 Layout 布局中使用 fragment 标签嵌入指定 Fragment,如: ?xml version=1.0 encoding=utf-8? LinearLayout xmlns:android=/apk/res/android android:layout_width=match_parent android:layout_height=match_parent android:orientation=vertical fragment android:layout_width=match_parent android:layout_height=match_parent class=com.yifeng.samples.OneFragment/ /LinearLayout 后者在 Activity 的 Java 代码中借助管理器类 FragmentManager 和 事务类 FragmentTransaction 提供的

文档评论(0)

liwenhua00 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档