美文网首页
Fragment-基础梳理

Fragment-基础梳理

作者: Yison_a169 | 来源:发表于2018-08-28 14:25 被阅读0次

    网上很多关于Fragment 的基础详解,Fragment 对于我们也不陌生了,今天来整理一下Fragment的用法等。

    1.生命周期

    可以看到Fragment比Activity多了几个额外的生命周期回调方法:

    onAttach(Activity)

    当Fragment与Activity发生关联时调用。

    onCreateView(LayoutInflater, ViewGroup,Bundle)

    创建该Fragment的视图

    onActivityCreated(Bundle)

    当Activity的onCreate方法返回时调用

    onDestoryView()

    与onCreateView想对应,当该Fragment的视图被移除时调用

    onDetach()

    与onAttach相对应,当Fragment与Activity关联被取消时调用

    2.动态用法

    1.创建 FragmentManager

    2.获取FragmentTransaction

    3.动态替换fragment

    4. comment

    FragmentManager fm = getFragmentManager();

    FragmentTransaction transaction = fm.beginTransaction();

    mFragment =MyFragment();

    transaction.replace(R.id.id_content, mFragment );

    transaction.commit();

    3.具体方法介绍

    transaction.add() 

    往Activity中添加一个Fragment

    transaction.remove()

    从Activity中移除一个Fragment,如果被移除的Fragment没有添加到回退栈,这个Fragment实例将会被销毁。

    transaction.replace()

    使用另一个Fragment替换当前的,实际上就是remove()然后add()的合体~

    transaction.hide()

    隐藏当前的Fragment,仅仅是设为不可见,并不会销毁

    transaction.show()

    显示之前隐藏的Fragment

    detach()

    会将view从UI中移除,和remove()不同,此时fragment的状态依然由FragmentManager维护。

    attach()

    重建view视图,附加到UI上并显示。

    transatcion.commit()//提交一个事务

    addToBackStack(String)

    注意replace()方法时,再调用 addToBackStack(), 将当前的事务添加到了回退栈,所以Fragment实例不会被销毁,但是视图层次依然会被销毁,即会调用onDestoryView和onCreateView

    4.通讯

    a、如果你Activity中包含自己管理的Fragment的引用,可以通过引用直接访问所有的Fragment的public方法

    b、如果Activity中未保存任何Fragment的引用,那么没关系,每个Fragment都有一个唯一的TAG或者ID,可以通过getFragmentManager.findFragmentByTag()或者findFragmentById()获得任何Fragment实例,然后进行操作。

    c、在Fragment中可以通过getActivity得到当前绑定的Activity的实例,然后进行操作。

    5.回收时出现的问题

    当app长期处于后台,或者屏幕转换的时候,可能会出现多个Fragment重叠,原因是app重新启动,调用onCreate 方法进而触发重新add多一个Fragment,处理方法就是在之前做判断即可。


    DialogFragment->https://blog.csdn.net/androidstarjack/article/details/73824885

    相关文章

      网友评论

          本文标题:Fragment-基础梳理

          本文链接:https://www.haomeiwen.com/subject/cqhxwftx.html