标签:
Fragment相信写Android的大家都懂吧,因为刚开始接触的时候没有,所以一直使用Activity偶尔使用Fragment和FragmentActivity,但是由于需求的原因,楼主不得不去深刻的理解Fragment,因为有的东西是Activity实现不了的,算是被动去深入理解新事物吧,这个习惯不是很好,估计是因为不理解他的好的方面吧,当初很排斥去使用他,不过现在感觉这货配合这ViewPager真的很好用,既能简化代码,又能降低程序的耦合性,用起来确实很顺手很方便。好了,老规矩,上代码
我没把所有的Fragment所有的生命周期都列出来,列出了几个很常用的
onAttach,onCreate,onCreateView,onViewCreated,onConfigurationChanged,onCreateView,onActivityCreated,onStart,onResume,onPause,onStop,onDestroyView,onDetach,setContentView,onHiddenChanged。博主简单就列出了这几个方法,下面来详细的讲解
因为博主使用的Android Studio开发的,所以新建Fragment时它会自动给你建一个接口实现,博主用的少,但是还得提一句,这个方法简化了不同的Fragment之间的交互,可以穿一个URL参数,具体的使用根据实际情况而定吧,不过如果不注掉又不用的程序是跑不起来的,所以建议不用的话先注掉,但是别删,以防万一。
博主写的是公司的工程,全部的代码就不贴出来了,贴部分的代码,首先程序的第一个界面是Fragment+FragmentActivity+tabhost,但是其中又包含着viewpager+Fragment
当打开这个程序时,Fragment的生命周期是,这一块主要研究FragmentActivity中的Fragment
写着生命周期的是在FragmentActivity里面包着的,而没有写的是和viewpager结合的小模块
由此可见,当你打开app时,它会先创建你的FragmentActivity,然后开始加载此FragmentActivity中的Fragment,再然后便是Fragment的children但是仅限于第一个展示的Fragment,再来看销毁的过程
程序是先pause然后stop,再然后销毁页面再就是分离Fragment
Fragment在createView中加载xml布局文件,在activitycreated进行初始化,剩下的根据具体情况放在具体周期中,这里就不细谈了,再来说里面嵌套的子Fragment
首先来看生命周期
这是打开父Fragment中子Fragment的生命周期,但是仅限于展示页面的Fragment,并不是不展示的,下面来看一下同级别的子Fragment生命周期的变化
可见,是先把新的Fragment建立然后再去销毁旧的同级别的Fragment,但是并没有消除父Fragment,只是销毁了同级别的Fragment,但是在此过程中并没有看到onHiddenChanged方法的调用,以后遇到我会细谈的。
说一下利用viewpager进行不同的Fragment切换的问题,如果Fragment中的布局是xml定义好的,但是在Fragment却没有定义的话,那么Fragment是在切换到第三个Fragment才进行销毁的,否则的话是不销毁的,但是如果Fragment中定义了布局,那么在切换到新的Fragment时,新的resume后则旧的进行销毁,但是如果不定义的话则切换到第二个Fragment时,第一个Fragment是不会销毁的,好了,博主是码字的,好累,大家估计要消化消化
浅析viewpager&Fragment&FragmentActivity
标签:
原文地址:http://blog.csdn.net/qq_23195583/article/details/45195127