您的位置:首页 > 移动开发 > Android开发

android之Fragment基础详解(一)

2016-12-27 19:14 330 查看
一、Fragment的设计哲学

  Android在3.0中引入了fragments的概念,主要目的是用在大屏幕设备上——例如平板电脑上,支持更加动态和灵活的UI设计。平板电脑的屏幕比手机的大得多,有更多的空间来放更多的UI组件,并且这些组件之间会产生更多的交互。

  针对屏幕尺寸的差距,很多情况下,都是先针对手机开发一套App,然后拷贝一份,修改布局以适应平板神马超级大屏的。难道无法做到一个App可以同时适应手机和平板么,当然了,必须有啊。Fragment的出现就是为了解决这样的问题。你可以把Fragment当成Activity的一个界面的一个组成部分,甚至Activity的界面可以完全有不同的Fragment组成,更帅气的是Fragment拥有自己的生命周期和接收、处理用户的事件,这样就不必在Activity写一堆控件的事件处理的代码了。更为重要的是,你可以动态的添加、替换和移除某个Fragment。

  

下图是文档中给出的一个Fragment分别对应手机与平板间不同情况的处理图:

MyFragment4.java
  

测试顺序:启动fragment—>回到桌面—>回到应用—>切换fragment—>退出fragment

日志打印:

    


    


  总结:

  1)启动fragment

  onAttach()—>onCreat()—>onCreateView()—>onActivityCreated()—>onStart()—>onResume()

  2)锁屏

  onPause()—>onStop()

  3)解锁

  onStart()—>onResume()

  4)切换到其他的Fragment

  第一个:onPause()—>onStop()—>onDestroyView()—>onDestroy()—>onDetach

  第二个:onAttach()—>onCreat()—>onCreateView()—>onActivityCreated()—>onStart()—>onResume()

Fragment 与Activity通信

  1)Fragment可调用getActivity()方法获取它所在的Activity

  2)Activity可调用FragmentManager的findFragmentById()或findFragmentByTag()方法获取Fragment

Activity——>Fragment:在Activity中创建Bundle数据包,并调用Fragment的setArguments(Bundle bundle)方法

Fragment——>Activity:需要在Fragment中定义一个内部回调接口,再让包含该Fragment的Activity实现该回调接口。这样Fragment可调用该回调方法将数据传递给Activity

更详细也可以参考:http://www.itnose.net/detail/6396730.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: