fragment生命周期 fragment与activity通信

一、Fragment生命周期

Fragment的生命周期
1、 onAttach();//当fragment被添加到activity中时会回调这个方法;只会调用一次
2、 onCreate();//在fragment创建的时候回调这个方法;只会调用一次;
3、 onCreateView()://每次创建都会绘制Fragment的View组件时调用该方法,相当于fragment绑定一个布局,布局文件转换成view返回回来;
4、 onActivityCreated();//fragment所在的activity启动完成后调用;
5、 onStart():启动Fragment时会被回调,
6、 onResume()方法,调用onStart()方法后面一定会调用这个方法,恢复fragment时回调
7、 onPause():暂停Fragment
8、 onStop();//停止Fragment
9、 onDestroyView():销毁Fragment所包含的View组件,与onCreateView相对应
10、 onDestroy():销毁Fragment时会被回调
11、 onDetach():Fragment从Activity中删除时回调这个方法,并且只调用一次
启动fragment
onAttach()->onCreate()->onCreateView()->onActivityCreated()->onStart()->onResume()
屏幕锁屏
onPause()->onStop()
屏幕解锁
onStart()->onResume()
第一个fragment切换到第二个fragment
第一个onPause()->onStop()->onDestoryView()->onDestory()->onDetach();

第二个onAttach()->onCreate()->onCreateView()->onActivityCreated()->onStart()->onResume()

二、activity向fragment传递数据

Fragment与Activity通信
(1)Fragment可调用getActivity()方法获取它所在的Activity
(2)Activity可调用FragmentMangaer的findFragmentById()或findFragmentByTag()方法获取Fratment

Activity->Fragment:在Activity中创建Bundle数据包,并调用Fragment的setArguments(Bundle bundle)方法。
Fragment->Activit:需要在Fragment中定义一个内部回调接口,在让包含该Fragment的Activity实现该回调接口。这样Fragment可调用改回调方法将数据传递给Activity。

在Activity中使用setAraguments方法
Bundle bundle = new Bundle();
bundle.putString(key,value);
fragment.setArgumemts(bundle);
Fragment中
getArguments().get(key);

三、fragment向activity传递数据

//动态加载 activity向fragment传值
String text = textView.getText().toString();
MyFragment5 fragment5 = new MyFragment5();
Bundle bundle = new Bundle();
bundle.putString("name", text);
fragment5.setArguments(bundle);
FragmentManager manager = getFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.add(R.id.layout, fragment5, "fragment5");
transaction.commit();//最后不要忘记提交
//静态加载 activity向fragment传值
FragmentManager fragmentManager = getFragmentManager();
Fragment fragment = fragmentManager.findFragmentById(R.id.frag);
MyFragment2 myFragment2 = (MyFragment2)fragment;
myFragment2.setAa(" activity向fragment传值Hello");

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值