- 1、本文档共11页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
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 提供的
您可能关注的文档
最近下载
- 某公司服装生产线单件流实施方案.doc VIP
- 2025年四川省绵阳市中考数学二模试卷.docx
- 中职英语教案:Food-and-Drinks(全6课时).doc VIP
- 1019高二【历史(统编版)】近代以来中国的官员选拔与管理(下)-课件.pptx VIP
- 南阳历史文化名镇保护规划(2021-2035)文本+图集(100页).pdf VIP
- WinCC与Office办公平台的数据报表集成DataMonitor.pptx
- 1015高二【历史(统编版)】近代以来中国的官员选拔与管理(上)-课件.pptx VIP
- 双照楼诗词稿.docx VIP
- 锅炉维修施工方案.pdf VIP
- 美剧剧本绝望主妇台词本中英文对照精排版第一季第一集.pdf VIP
文档评论(0)