您的位置:首页 > 移动开发 > Android开发

1.5_Android Training 学习笔记_Fragment

2016-09-18 09:44 357 查看
Fragment知识概要

Fragment可以作为Activity界面的一部分组成出现

可以在一个Activity中同事出现多个Fragment,并且一个Fragment也可以在多个Activity中使用

在Activity运行过程中,可以添加、移除或替换Fragment

Fragment可以响应自己的输入时间,并且有自己的生命周期,它们的生命周期会受宿主Activity的生命周期影响

onCreateView() 方法

Fragment第一次绘制它的用户界面的时候,系统会调用此方法,为了绘制Fragment的UI,此方法必须返回一个View,如果不显示UI,返回null即可

Fragment加载方式

静态加载

在Activity的layout文件中声明Fragment,需要特别注意的是中的android:name属性指定了在layout中实例化的Fragment类

标识Fragment的方法

android:id 属性提供一个唯一ID

android:tag属性提供一个唯一字符串

动态加载

用一个 FrameLayout 承载

getFragmentManager().popBackStack();

这样话在fragment中后退

Fragment的生命周期

当通过XML布局文件的方式将Fragment添加进activity时,Fragment是不能被动态移除的。如果想要在用户交互的时候把fragment切入与切出,必须在activity启动后,再将fragment添加进activity。

替换fragment的过程类似于添加过程,只需要将add()方法替换为 replace()方法。

记住在执行fragment事务时,如移除或者替换,我们经常要适当地让用户可以向后导航与”撤销”这次改变。为了让用户向后导航fragment事务,我们必须在FragmentTransaction提交前调用addToBackStack()方法

Fragment 之间的交互

为了让fragment与activity交互,可以在Fragment类中定义一个借口,并在activity中实现。Fragment在他们的生命周期的onAttach()方法中获取接口的实现,然后调用接口的方法与Activity交互。

1、在fragment中定义如下
public interface mCallBack{
public  void myCall();
}
2、在activity中实现这个`myCall()` 方法
3、在fragment中获取activity
Activity activity = getActivity();
mycall = (mCallBack)activity;
4、然后就可以在fragment中调用这个方法了
mycall.myCall();


对3中的步骤不是很清楚,应该是获取这个activity然后向下转型得到mycall吧。。。

当移除或者替换一个fragment并把它放入返回栈中时,被移除的fragment的生命周期是stopped(不是destoryed).当用户返回重新恢复这个fragment,它的生命周期是restarts。如果没有把fragment放入返回栈中,那么当它被移除或者替换时,其生命周期是destoryed。

fragment 之间传递数据

1、
afragment = new afragment();
Bundle args = new Bundle();
args.putInt("a", 2);
2、
ita =getArguments().getInt("a");


ita 在类开始处定义好。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  fragment android