TwelveDay-Fragment
一、Fragment
特点:碎片用来将页面模块管理,一个Activity中间以有多个碎片,碎片不可以单独使用
二、显示方式
1、静态显示
页面布局:</>
2、动态显示
步骤及内部方法
1、FragmentManger m =getSupportFragmentManger();
2、FragmentTranscation transaction = m.beginTransction()’
3、transaction.add(R.id.占位控件,fragment对象);
4、transaction.replace(R.id.占位控件,frragment对象);
4、transaction.remove(frragment对象);
4、transaction.hide(frragment对象);//必须添加过
4、transaction.show(frragment对象);//必须add过
三、如何创建Fragment
1、自定义类继承Fragment
2、重写onCreateView()为Fragement填充布局
四、生命周期
1.onAttach() :添加到Activity执行,只执行一次
2.onCreate():创建Fragment时执行,只执行一次
3.onCreateView():创建布局,更新布局时执行,执行多次
4.onActivity():启动Activity执行
5.onStart():启动或重启
6.onResume():获得焦点
7.onPause():失去焦点
8.onStop():停止时执行,界面不可见
9. onDestroyView() :销毁布局
10.onDestroy():销毁自己
11.onDetach():从Activity中移除
与Activity类似:Fragment也有以下几种状态
1、活动状态:当前Fragment位于前台,可见可获得焦点
2、暂停状态:其他Activity位于前台,该Fragment可见,不获得焦点
3、停止状态:不可见失去焦点
4、销毁状态:该Fragment被完全删除或被结束
五、Fragment-Fragment 相互传值
1、EventBus
步骤
1、 Fragment1 发送EventBus.getDefault().postSticky();
2、Fragement2 注册,解绑,接收
2、replace()+setArgments()+getArgments();
步骤
1、Fragment1:
replace();//替换一个新的fragment
Bundle bundle = new Bundle();
bundle.putString(“k”,v);
Fragment2 f2 = new Fragment2();
f2.setArgments(bundle);//把数据给新的Fragment
replace(R.id.控件,f2);
2、Fragment2:
获得Bundle.getArgments(); --Bundle
3、传值案例:
这个案例总共按照两种方式写的
先看第一个:
上边的Fragment
下边的Fragment:
接下来看第二种:
下边所圈的内容就是两种方法不同的地方
这是上边的Fragment
其次是下边的:
两种方法代码差距不大,可以相互对比来看
效果图: