Fragment

fragment解析推荐博客http://blog.csdn.net/lmj623565791/article/details/37970961


以下是我随笔记下的
实现的几种方法:
fragment,FrameLayout是两个不同的标签 一个是容器 一个是对象
FramLayout是在xml创建一个framLayout标签,然后通过java代码中
FragmentManager fragment = getSupportFragmentManager();得到管理器.
FragmentTransaction transaction = fragment.beginTransaction();得到事务,然后通过事务将创建的fragment对象放入framLayout标签中:transaction.add(framlayout的xmlID,fragment对象),之后记得提交transaction.commitAllowingStateLoss();(transaction.commit;有两种提交方式,但是括号内的这种有时会报异常,推荐用外面的那种)
记得transaction中有两个方法的add 和 replace 影响的只是界面,而控制回退的,是事务。返回键的时候,这个跟事务有关,跟使用add还是replace没有任何关系.

fragment标签就比较简单 直接在xml文件中设置标签,然后通过属性name写出对应的类名,他就生成了一个对象在fragment管理器中,可以通过getfragmentManager()得到的,非常简单粗暴,但是很明显的其一开始设定就无法改变成其它的fragment.

fragment也经常会用viewpager来存放,这个viewpager需要通过导v4包才能够使用,通过自定义一个viewpager的适配器 myAdapter继承FragmentPagerAdapter来将fragment放入viewpager中.

这三种方式都可以很好的展现出frament

当ViewPager 存放viewPager时

假设有四个Fragment 当前展示的为第2个

当从2->3界面时 第二个执行第三个界面的onAttach onCreate到 onResume 但是第二个界面的状态并没有改变 并未执行onPause方法 而是执行了第四个的 生命周期 第2的生命周期完全没有改变 想要知道其状态 只能通过 setUserVisibleHint 这个方法来查看 它是否在当前被展示的页面 这点需要注意!!!!!!!!!!!!!!

在使用时添加日志可以看到。刚进入时,会初始化前两个Fragment,前两个Fragment都会调用fragmen如下方法。
Fragment1,2
LogUtils–> onAttach()
LogUtils–> onCreate()
LogUtils–> onViewCreated()
LogUtils–> onActivityCreated()
LogUtils–> onStart()
LogUtils–> onResume()
往右滑动一个后,显示Fragment2时,会调用第三个fragment的方法:
Fragment3
LogUtils–> onAttach()
LogUtils–> onCreate()
LogUtils–> onViewCreated()
LogUtils–> onActivityCreated()
LogUtils–> onStart()
LogUtils–> onResume()
当再往右滑动显示Fragment3时,会调用第四个Frament的生命周期。同时Fragment1会调用如下方法
Fragmen1:
LogUtils–> onPause()
LogUtils–> onStop()
LogUtils–> onDestroyView()
可以看出Fragment1的View被销毁了。
这是因为viewpager默认只会保留当前显示页,前一页与后一页的界面。
可以调用viewpager的如下方法设置保留的个数,默认值是1,正如它的注释一样这个数不能设置的太大了

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值