您的位置:首页 > 其它

Fragment的生命周期以及跟Activity之间互相传值小总结

2016-09-08 13:44 351 查看
Fragment的生命周期

生命周期:    onAttach()当fragment被绑定到Activity时调用
     onCreate()创造一个fragment
     onCreateView()返回一个自定义的视图
     onActivityCreated()Activity的onCreate()返回以后
     onStart()启动fragment
     onResume()获得焦点
     onPause()失去焦点
     onStop()停止fragment
     onDestroyView()销毁视图
     onDestroy()销毁fragment
     onDetach()断开与Activity之间的联系

其中onAttach()与onDetach()对应,onCreateView()与onDestroyView()对应

Fragment与Activity之间互相传值问题

1,从Activity传值到Fragment中:
需要一个自定义的布局以及一个继承了Fragment的类(onCreateView中返回一个自定义布局的视图)
先创建一个Bundle:Bundle bundle=new Bundle();
然后把数据放入Bundle中:bundle.put<数据类型>(键,值);
创建一个继承了Fragment的类的对象
然后用这个对象.setArguments(bundle);
再新建一个事务FragmentTransaction,开始这个事务
然后用Fragment的对象替换掉Activity里的某个容器,提交下事务
在继承了Fragment的类中,重写一下onAcitivityCreated方法
然后用一个Bundle对象接收一下Activity传过来的Bundle值(getArguments)
通过bundle的键,来获得bundle的值,然后实现了从Activity中传值到Fragment中

2,从Fragment中传值到Activity
使用的方法是接口的回调:
新建一个接口,在接口中定义一个方法,并给一个所需的数据的数据类型的参数
在Fragment中,设置一个接口的全局变量,重写onAttach()方法
把方法中的activity强转为接口类型用全局变量的接口接收下
在事件中调用接口的方法,并把需要传的数据作为该方法的参数
在Activity中,实现该接口并重写里面的方法,在重写的方法里面,获得的参数的值就是从Fragment中传过来的

3,从Fragment中获取Activity中的某个控件的某些属性或数据
在Fragment中,重写onActivityCreated方法
然后通过getActivity()方法来获得Activity的视图,从来根据ID来寻找控件并获得该控件得属性或者数据

4,从Activity中获取Fragment中某个控件的属性或者数据
在Activity中,通过FragmentManager来寻找Fragment的视图
manager.findFragmentById(容器).getView()
然后通过该视图即可获得该Fragment中某个控件的属性或者数据了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息