前面已经写过一些内容了,再总结下:
1.fragment生命周期
onAttach(Activity):fragment与activity关联时调用。现已过时,最新方法是onAttach(Context);
onCreate(Bundle ):fragment对象初始创建时调用;
onCreateView(LayoutInflater, ViewGroup,Bundle):创建和fragment关联的View;
onActivityCreated(Bundle): 当activity的onCreate()方法结束后调用;
onStart():fragment真正显示给用户;
onResume():当包含该fragment的activity重新启用时调用;
onPause():当fragment所依赖的activity被挂起,或者fragment不在和用户交互时调用;
onStop():当fragment所依赖的activity被终止,或者fragment被隐藏时调用;
onDestroyView():当fragment对象被移除时调用;
onDestroy():fragment对象被清理完成后调用;
onDetach():当fragment对象和activity联系中断时调用;
2.fragment和activity通信
1)一般在activity中启动fragment,这种时候,如果想要从activity中传值给fragment,可以通过fragment.setArguments(bundle),将数据存到bundle中带给fragment,在fragment中,getArguments().getString()或者get其他,得到相应数据;
2)通过接口回调方式
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
mClickListener = (MClickListener) activity;
}
可以在fragment中创建接口,并通过onAttach方法,将接口实例绑定至activity,就可以在fragment中通过mClickListener启动接口中的方法,在activity中实现接口,重写方法就能得到fragment传递来的数据;
3)一个强大的库EventBus
在应用中当想通知其他组件某些事情发生时就会使用到开源框架EventBus。它主要功能是可以替代Intent、Handler、BroadCast在Fragment、Activity、Service、线程之间传递消息。优点是开销小,代码简洁,解耦代码。
强大,好用。