自从android4.0之后,fragment就被广泛使用,我们知道Fragment与Activity有所不同,也有相似之处。Activity有生命周期,Fragment也有生命周期,了解了Fragmnet的生命周期,我们才能在控制程序时游刃有余。
先来看看官方给出的fragment的生命周期图:
从上面可以看出Fragment有11个状态,测试代码如下:
public class RightFragment extends Fragment{ public static final String TAG = "RightFragment"; @Override public void onAttach(Activity activity) { super.onAttach(activity); Log.d(TAG, "onAttach"); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.d(TAG, "onCreate"); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { Log.d(TAG, "onCreateView"); View view = inflater.inflate(R.layout.right_fragment, container, false); return view; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); Log.d(TAG, "onActivityCreated"); } @Override public void onStart() { super.onStart(); Log.d(TAG, "onStart"); } @Override public void onResume() { super.onResume(); Log.d(TAG, "onResume"); } @Override public void onPause() { super.onPause(); Log.d(TAG, "onPause"); } @Override public void onStop() { super.onStop(); Log.d(TAG, "onStop"); } @Override public void onDestroyView() { super.onDestroyView(); Log.d(TAG, "onDestroyView"); } @Override public void onDestroy() { super.onDestroy(); Log.d(TAG, "onDestroy"); } @Override public void onDetach() { super.onDetach(); Log.d(TAG, "onDetach"); } }
运行程序,控制台输出:
跳到别的fragment时:
再次启动fragment时:(注意这里你不是按回退键)
Fragment之间是独立的,那么如何实现切换时前一个Fragment就会销毁,再次启动时,重新创建。那么如何实现类似activity的回退效果呢?
看下面的代码:
Fragment1 fragment1 = new Fragment1();
FragmentManager fragmentManager1 = getFragmentManager();
FragmentTransaction transaction1 = fragmentManager1. beginTransaction();
transaction1.replace(R.id.right_layout, fragment1);
transaction1.addToBackStack(null);
transaction1.commit();
实现回退效果,就需要添加 transaction1.addToBackStack(null);这一句,那么切换Fragment时,fragment不是被销毁,而是进入回退栈,当点击回退键时,栈顶fragment被销毁,之前的fragment替代栈顶fragment,显示在界面上。
有了activity的生命周期作为基础,Fragment的生命周期就容易理解多了。接下来就可以愉快的和代码玩耍了!
相关推荐
Activity Fragment 生命周期研究
Fragment学习之一、Fragment生命周期http://blog.csdn.net/xuehuayous/article/details/45032681 讲解博客完整代码。
Activity生命周期Fragment生命周期的log过程
Fragment生命周期演示Demo,13个方法都有写到,希望对大家有帮助
Android fragment生命周期一张图解,一张图完全解释fragment的生命周期.看一遍就会
测试了下fragment生命周期,之前一直看别人的文章知道生命周期,但是过后就忘了,现在实际操作了一遍fragment生命周期还是很有意义的,加深了印象解决了自己概念模糊不清的地方。
工厂模式下add replace show hide fragment 还有Activity fragment生命周期
Fragment生命周期,Frament生命周期和Activity生命周期的关系。Fragment的生命周期方法何时回调。
理解Fragment生命周期(字典) 有这个字典以后对照查就行了。
fragment 代码示例
该Demo比较通俗易懂的讲解了Fragment的生命周期。大家可以查看我的博客,上面有更详细的关于Fragment生命周期的讲解。
Fragment生命周期Demo,详细使用可以查看: http://blog.csdn.net/u010049692/article/details/38926561 http://www.cnblogs.com/getherBlog/p/3945052.html
NULL 博文链接:https://baihe747.iteye.com/blog/2178213
Android Activity ABC页面跳转生命周期变化及activity + fragment生命周期变化
作者:【郭孝星】http://blog.csdn.net/allenwells 微博:【郭孝星的新浪微博】http://weibo.com/allenwells 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells Github:...
fragment之间在不使用replace切换fragment时的生命周期
android-lifecycle, Android Activity/fragment 生命周期的图表 完整的Android fragment & Activity 生命周期尝试了解各种各样的片段之后,我做了一些研究并将完整的Android Activity/fragment 生命周期结合起来。...
创建一个Fragment,以及查看Fragment生命周期函数