Fragment和Activity之间的通信
2017-04-28 15:08
267 查看
在Activity中调用Fragment中的方法:
在Fragment里调用Activity里的方法:
首先在一个fragment中可以得到与它相关联的activity,然后再通过这个活动去获取另外一个fragment的实例。就这么简单。
最后我讲一下Fragment中大家很容易忽略, 但是对用户体验很有用处的方法:addToBackStack();
我们都知道fragment的生命周期是onAttach()->onCreate()->onCreateView()->onActivityCreated()->onStart()->onResume()->onpause()->onStop()->onDestroyView()->onDestory()->onDetach()
如果我们加入addToBackStack();那么我们在切换fragment的时候,上一个fragment则会进行onPause->onStop()->onDestoryView(),如果没有加入这个方法,那么上一个fragment进入销毁状态,onDestory()->onDetach()都会执行;如果我们点击Back键返回到上一个fragment,则会从onDestoryView()回到onCreateView()->onActivityCreated()->onStart()->onResume(),但是oncreate()并不会执行,因为我们借助了addToBackStack()使得上一个fragment没有被销毁。
今天就总结到这里吧,有相关问题请给我留言,我们一起探讨。
LeftFragment leftFragment = (LeftFragment)getSupportFragmentManager().findFragmentById(R.id.left_fragment)我们调用FragmentManager的findFragmentById()方法,就可以在我们的Activity里得到相应碎片的实例,然后就能轻松的调用碎片里面的方法,传递参数了
在Fragment里调用Activity里的方法:
MainActivity activity = (MainActivity)getActivity();是不是很简单,这个时候也许你会问fragment和fragment之间可不可以通信?我可以肯定的告诉你,当然可以。
首先在一个fragment中可以得到与它相关联的activity,然后再通过这个活动去获取另外一个fragment的实例。就这么简单。
最后我讲一下Fragment中大家很容易忽略, 但是对用户体验很有用处的方法:addToBackStack();
FragmentManager fragmentManager = getSupportFragmentManager(); FragmentTransaction transaction = fragmentManager.beginTransaction(); transaction.replace(R.id.right_layout,fragment); transaction.addToBackStack(null); transaction.commit();这个方法的参数 一般传入null即可。这个方法被调用,意味着将这个fragment加入了一个返回栈,比如一个activity里面需要很多个fragment,根据点击按钮的不同展示不同的fragment ,如果不加这句代码,当你点击back的时候直接退出程序,如果加了,那么点击back键则会返回上一个展示的fragment,直到这个返回栈清空,没有事务,才会退出程序。
我们都知道fragment的生命周期是onAttach()->onCreate()->onCreateView()->onActivityCreated()->onStart()->onResume()->onpause()->onStop()->onDestroyView()->onDestory()->onDetach()
如果我们加入addToBackStack();那么我们在切换fragment的时候,上一个fragment则会进行onPause->onStop()->onDestoryView(),如果没有加入这个方法,那么上一个fragment进入销毁状态,onDestory()->onDetach()都会执行;如果我们点击Back键返回到上一个fragment,则会从onDestoryView()回到onCreateView()->onActivityCreated()->onStart()->onResume(),但是oncreate()并不会执行,因为我们借助了addToBackStack()使得上一个fragment没有被销毁。
今天就总结到这里吧,有相关问题请给我留言,我们一起探讨。
相关文章推荐
- android中fragment和activity之间相互通信
- android中fragment与activity之间通信原理以及例子
- fragment与activity之间的通信
- Activity与Fragment,Fragment与Fragment之间的通信
- Android系列之Fragment(三)----Fragment和Activity之间的通信(含接口回调)
- 备忘宝小项目的总结(二) Fragment 与 Activity,与Fragment之间的通信
- Fragment与Activity之间的相互通信
- android中fragment与activity之间通信原理以及例子
- Android_Fragment和Activity之间的通信
- android中fragment和activity之间相互通信
- android开发中fragment的引用以及fragment与activity之间通信的概述
- Android——Fragment和Activity之间的通信+Frangment生命周期
- Activity和Fragment之间的数据通信
- Android Fragment与Activity之间的相互通信实例代码
- Android面试篇之Activity与Fragment、Fragment与Fragment之间的通信
- 详解Android activity与fragment之间的通信交互
- android开发中fragment的引用以及fragment与activity之间通信的概述
- Android Activity和Fragment之间的常规通信方式
- 黑马程序员——fragment 与Activity 之间的通信
- 详解Fragment跟Activity之间的通信