Android知识点(四)之Fragment(二)

借鉴链接:
1.https://www.jianshu.com/p/184f0c8857d6
2.https://www.baidu.com/link?url=EIP_ZFeMnBal7-wyjfvvGEZ7gxCk44cJBX7cpGur3eGK70RModiGipB24AQJkMQI&wd=&eqid=8cfc062b0006fbfc000000025ea14180

Fragment的生命周期

在这里插入图片描述
在这里插入图片描述
相关方法调用:
onAttach():当Fragment和Activity建立关联时调用
onCreateView():当Fragment创建视图时调用
onActivityCreated():当与Fragment相关联的Activity完成onCreate()之后调用
onDestroyView():在Fragment中的布局被移除时调用
onDetach():当Fragment和Activity解除关联时调用

在这里插入图片描述
Fragment生命周期与Activity生命周期的一个关键区别就在于,Fragment的生命周期方法是由托管Activity而不是操作系统调用的。Activity中生命周期方法都是protected,而Fragment都是public,也能印证这一点,因为Activity需要调用Fragment那些方法并管理它。

Fragment加载

Fragment的几个核心类

  • Fragment : Fragment的基类 ,任何创建的Fragment都需要继承该类
  • FragmentManager :管理和维护Fragment。他是抽象类,具体的实现类是FragmentManagerlmpl
  • FragmentTransaction: 对Fragment的添加、删除等操作都需要通过事务方式进行。他是抽象类,具体的实现类是BackStackRecord

扩展子类: .

  • 对话框: DialogFragment
  • 列表: ListFragment
  • 选项设置: PreferenceFragment
  • WebView界面: WebViewFragment

静态加载

1.首先在Layout中新建一个xml文件,作为一个fragment的布局文件
2.创建一个新的类去继承Fragment,并且将前面创建的布局文件加载进来。重写的是onCreateView方法:
在这里插入图片描述
3.在活动中将新建的fragment作为组件添加到活动的布局文件中:使用< fragment>标签添加碎片,并且一定要有android:name属性且值为被加载的Fragment类的包名.类名完整形式
在这里插入图片描述
4.活动中加载第三步新建的布局文件,将fragment添加到活动中,该fragment的控件也是主活动的控件,所以也可以直接在活动中使用。

动态加载

(1)(2)两步和静态加载雷同
(3)修改main布局文件
在这里插入图片描述
(4)首先获取一个新建的Fragment类的实例对象,然后获取一个FragmentManager的实例对象,最后通过它的beginTransaction()获取一个FragmentTransaction的实例;通过操作碎片事务的方法将碎片添加到布局文件,完成操作后进行提交。add()方法里的第一个参数是容器视图资源Id,容器视图资源Id有两个作用:告知FragmentManager,碎片视图应该出现在活动视图的什么地方;它也是FragmentManager队列中碎片的唯一标识符。而静态加载时碎片的唯一标识符正是在活动布局里< fragment>下的id。
在这里插入图片描述

Fragment和Activity的交互

静态加载加载碎片的方式:

MyFragment myFragment = (MyFragment)getFragmentManager(). findFragmentById(R.id.fragment);

动态加载加载碎片的方式:

MyFragment myFragment = (MyFragment)fragmentManager(). findFragmentById(R.id.layout);

碎片中加载活动的方式:

MainActivity activity=(MainActivity)getActivity();

Fragment和Activity的关系

Fragment的出现是为了解决Android碎片化,它可作为Activity界面的组成部分,可在Activity运行中实现动态地加入、移除和交换。
一个Activity中可同时出现多个Fragment,一个Fragment也可在多个Activity中使用。另外,Activity的FragmentManager负责调用队列中Fragment的生命周期方法,只要Fragment的状态与Activity的状态保持了同步,宿主Activity的FragmentManager便会继续调用其他生命周期方法以继续保持Fragment与Activity的状态一致。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值