【UI模块】Fragment之一(创建和调用)

来源:互联网 发布:网吧软件管理 编辑:程序博客网 时间:2024/05/31 11:04

创建一个Fragment(简单来说就是嵌套)
必须创建一个Fragment子类或继承一个已存在的子类。然后在onCreateView( ) 方法中加载属于Fragment自己的布局文件。

PS:
onCreateView()方法:
Fragment第一次绘制它的用户界面的时候,系统会调用此方法,用来绘制Fragment的UI,此方法必须返回一个View,如果不显示UI,返回null即可
onCreatView()方法参数:
resource:Fragment需要加载的布局文件
root:加载layout的父ViewGroup
attactToRoot:false,不返回ViewGroup


处理Fragment事务:
如果允许用户通过按下 BACK 按键返回到前一个 Fragment 状态,调用 commit() 之前可以加入 addToBackStack() 方法 ↓↓↓↓↓↓↓↓
动态加载的实现

//首先再新建 Fragement 类,再给这个 fragement 新建个XML文件//然后在主类里面,先初始化(实例化)这个 fragement 类MyFragement fragement = new MyFragement();//然后创建一个管理者FragementManager fragementManager = getFragement();//再开启一个事务FragementTransaction beginTransaction=framentManager.beginTransaction();//可以进行:添加,移除,替换,操作beginTransaction.add(R.id.frame(这里填ID),fragement2(这里是对象));beginTransaction.remove();beginTransaction.replace();//如果想按返回键返回上一页,可添加此代码beginTransaction.addToBackStack(null);//(这里要填写一个名字,也可以写为空值)//提交事务beginTransaction.commit();

Fragment
是一个模块化和可重用的组件,因为Fragment定义了他自己的布局,以及通过它的生命周期回调方法定义了它的行为,可将Fragment包含到多个Activity中。
Fragment支持更灵活的布局,可以作为activity的一部分,可以独立,也可以和activity进行交互。
Fragment可以让两个activity显示在平板,如果是手机上,手机屏幕没有那么大,就会自动变为两个屏幕去显示。(自适应能力)

Fragment知识概要:
I、可以做为Activity界面的一部分组成出现
II、可以在一个Activity中同时出现多个Fragment并且一个Fragment也可以在多个Activity中使用
III、Fragment可以影响自己的输入事件,并且有自己的生命周期,它们的生命周期会受宿主Activity的生命周期的影响。

二、Fragment的加载方式
1 , 静态加载
在Activity的layout文件中声明Fragment,需要特别注意的是fragment中android:name属性指定了在layout实例化Fragment类

PS:标识Fragment的方法
(1)android:id属性提供一个唯一的ID
(2)android:tag属性提供了一个唯一的字符串


需要注意的是:
一、新建一个fragment.xml文件,放置我们的 fragment 框架,每一个 fragment 对应一个 myfragemt.xml 文件
二、创建主界面启动Activity_main.java
三、创建fragment所需要呈现的样式myfragmet.xml
四、创建MyFragment.java文件去修改view

AND!
fragment 自己也要有个类继承 Fragment ,在其中的 onCreateView 方法中加载 fragment 布局文件,返回 view 对象。
fragment 标签需要有 name 属性设置类的完整包名的id或者唯一tag标签
加载 fragment 的 activity 中可以直接访问到 fragment 布局中的控件 id

小技巧
1. 首先是fragment.xml 是子fragment的控件排布和内容。
2. fragment_main是管理fragment的组,里面的每个 fragment组件 对应一个fragment.xml
3. Myfragment.java相当于是我们对fragment重写的类。
4. mainactivity就可以对相应的fragment操作了。

思路:
MainActivity(主界面),布局文件是Main.xml(RadioGroup,RadioButton)之后创建了一个MainActivity2(静态加载Fragment的界面),它的布局文件是Main2.xml(这个布局里添加了一个Fragment标签->静态加载),并在这个xml文件中为Fragment标签定义了:name=”MyFragment”属性,这个属性对应了Fragment标签对应的包和类–>这个MyFragment.java(继承Fragment),并重写 onCreatView( ),这个方法返回一个view对象。还为这个类声明创建了一个布局文件(fragment.xml)。并添加了一个TextView和Button,通过 inflate.infalte()将布局文件添加在到这个MyFragment中。–>回到MainActivity2通过setContextView()将main2.xml加载。
最后回到MainActivity.java为第一个RadioButton添加点击事件(通过intent意图,跳转到MainActivity2)
MainActivity2 中直接通过 findViewById(); 将 fragment.xml 文件中的Button 加载,这是因为通过层层加载,这个 button 已经在于 main2.xml 中了。
最后在清单文件中添加 MainActivity2 ,并在 main2.xml 中为 Fragment 标签添加一个 id 或 tag

0 0