Fragment 详解

Fragment必须被嵌入Activity中使用,因此虽然Fragment也拥有自己的生命周期,但是会受它所在的生命周期的控制,例如,当Activity暂停时,其当中的所有的Fragment都会被暂停,Activity销毁时,其中所有的Fragment也会被销毁。只有当Activity处于活动状态时,程序员才可以通过独立的方法操作Fragment。

特征:

    1.Fragment总是作为Activity界面的组成部分。Fragment可通过调用getActiavity()方法获得它所在的Activity。Activity可以通过FragmentManager的findFragmentById()或findFragmentByTag()方法来获取Fragment;

    2.Activity运行当中,可以调用FragmentManager的add()\remove()\replace()动态的就那个性添加、删除、或者替换Fragment;

    3.一个Activity可以同时组合多个Fragment:反过来,一个Fragment也可以被多个Activity调用。

    4.Fragment可以响应自己的输入事件,并拥有自己的生命周期,但是被其所属的Activity生命周期控制。

 

创建Fragment:(与Activity类似)

只要将原来写在Activity中的回调方法写在Fragment当中即可。

 

Fragment与Activity通信

  将Fragment添加到Activity中有两种方式:

    》在布局文件中使用<fragment .../>元素添加Fragment,<fragment.../>元素的android:name属性指定Fragment的实现类。

    》在java代码中通过FragmentTransaction对象的add方法来添加Fragment。

 

    Activity的getFragmentManager();方法可返回FragmentManager,FragmentManager的beginTranscation()方法可开启并返回FragmentTranscation对象。

    》Activity向Fragment传递数据:在Activity中创建Bundle数据包,并调用Fragment.setArgument(Bundle bundle)方法,可将bundle传递给Fragment;

    》Fragment向Activity传递数据:在Fragment中定义一个内部回调接口,再让包含该Fragment的Activity实现该回调接口,然后在Fragment中进行回调。

 

Fragment管理与Fragment事务

Activity管理Fragment主要依靠FragmentManager。

    》使用findFragmentById或findFragmnentByTag来获取指定的Fragment。

    》调用popBackStack()方法将Fragment从后台弹出(模拟Back按键)

    》调用addOnBackStackCHangeListener()用于监听后台栈的变化。

    》可以调用FragmentManager的add()\remove()\replace()动态的就那个性添加、

posted @ 2018-08-03 10:42  vvning  阅读(257)  评论(0编辑  收藏  举报