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()动态的就那个性添加、