Android-Fragment

有的没的Fragment

生命周期


Android-Fragment_第1张图片


Android-Fragment_第2张图片

一些要点:

1.3.0版本之后才引入fragment,所以minSdk要大于11;

2.Fragment需要嵌套在Activity中使用,当然也可以嵌套到另外一个Fragment中,但这个被嵌套的Fragment也是需要嵌套在Activity中的,受寄主Activity的生命周期影响,当然它也有自己的生命周期,另外不建议在Fragment里面嵌套Fragment,因为Fragment的生命周期不可控;

3.官方文档里面说创建Fragment至少需要实现三个方法:onCreate(),onCreateView(),onPause(),不过貌似只写一个onCreateView()也是可以的;(一个坑,一定要记住,是先执行了onCreate()方法后执行了onCreateView()方法)

4.Fragment的生命周期和Activity有点类似:

         Resumed:在允许中的Fragment可见

         Paused:所在Activity可见,但是得不到焦点

         Stoped:调用addToBackStack(),Fragment被添加到Back栈

        该Activity转向后台,或者该Fragment被替换/删除(停止状态的fragment仍然活着,所有状态和成员信息被系统保持着,然而它对用户不再可见,并且如果activity被干掉,它也会被干掉)

静态加载Fragment

首先自定义一个Fragment

Android-Fragment_第3张图片

然后在相应的Activity的xml文件中引用:

Android-Fragment_第4张图片

需要注意的地方:

fragment必须要写name和id

动态加载Fragment

        首先要获得FragmentManager对象,再获得FragmentTransaction对象,再调用add()或者repalce()方法加载Fragment,add(要传入的容器,fragment对象),在前面的基础上,还要调用commit()方法提交事务。

需要注意的地方:

需要引入android.support.v4.app.FragmentManager包

Fragment管理与事务

        Activity管理Fragment主要依靠FragmentManager可以调用findFragmentById()获取指定的fragment,也可以调用popBackStack()方法弹出后台Fragment;也可以调用addToBackStack(null)加入栈或者使用addOnBackStackChangeListener()监听后台栈的变化。

         如果是增删替换Fragment的话,则需要借助FragmentTransation对象,并记得操作完成后再使用commit()方法提交事务。

Fragment与Activity的交互

组件获取

Fragment获得Activity中的组件:getActivity().findViewById(R.id.button)

Activity获得Fragment中的组件(根据id和tag都可以):    

    getFragmentManager.findFragmentById(R.id.frag)

数据传递

Activity传数据给Fragment

         在Activity中创建Bundle数据包,调用Fragment实例的setArguments(bundle)从而将Bundle数据包传给Fragment,然后在Fragment中调用getArguments获得Bundle对象,然后进行解析。一个栗子

在Activity中:

在Fragment中:

Fragment传数据给Activity:

         在Fragment中定义一个接口,并写一个方法回调该接口:

Android-Fragment_第5张图片

在Activity中使用接口回调方法读取数据:

Android-Fragment_第6张图片

你可能感兴趣的:(Android-Fragment)