Fragment总结

/*----------------------------------------
 *-描述--Fragment例题总结.
 *-描述--S1.Fragment的生命周期
 *  ---Fragment的相关内容
 *  1.个Fragment 必须总是被嵌入到一个Activity 中,它的生命周期直接依赖于宿主Activity生命周期
 *  2.要创建一个Fragment 必须创建一个Fragment 的子类,或者继承自另一个已经存在的Fragment的子类
 *      并重写 onCreate()、onCreateView()、onPause()等相关方法
 *
 *  ---Fragment的相关方法及属性
 *  onCreate()  //创建Fragment时被创建。该方法只会被回调一次
 *  onCreateView()  //每次创建、绘制该Fragment的View组件时回调该方法,Fragment会调用该方法返回的View对象
 *  onPause()   //暂停Fragment时回调该方法,指示用户会离开这个Fragment
 *  onAttach()  当该Fragment被添加到Activity时被回调。该方法只会被调用一次
 *  onActivityCreated()   当Fragment所在的Activity被启动完成后回调该方法。当Activity
 *      的onCreate()方法之后调用该方法
 *  onStart()   启动Fragment时被回调
 *  onResume()  恢复Fragment时回调该方法,在onStart()方法后一定会回调该方法
 *  onStop()    停止Fragment时被回调
 *  onDestroyView() 销毁该Fragment所包含的View组件时调用
 *  onDestroy() 销毁Fragment时被回调
 *  onDetach()  将该Fragment从Activity中删除、替换完成时回调该方法,在onDestroy()
 *      方法后一定会回调onDetach()方法
 *
 *  ---Fragment的11个生命周期
 *  静态添加的Fragment创建时:onAttach() => onCreate() => onCreateView() => onStart() => onResume()
 *  失去焦点:onPause() => onStop()
 *  重新获取焦点:onStart() => onResume()
 *  退出:onPause() => onStop() => onDestroyView() => onDestroy() => onDetach()
 *      onActivityCreated()静态添加初始化时调用
 *      new XXXFragment()时并不执生命周期,而是在提交(.commit())后才走相应的生命周期方法
 *
 *  ---静态创建的Fragment与Activity生命周期之间的关系
 *  创建时:
 *      F-onAttach() => F-onCreate() => F-onCreateView() => A-onCreate() => F-onActivityCreated()
 *      => F-onStart() => A-onStart() => A-onResume() => onResume()
 *  暂停:
 *      F-onPause() => A-onPause() => F-onStop() => A-onStop()
 *  重入:
 *      F-onStart() => A-onStart() => A-onResume() => onResume()
 *  退出:
 *      F-onPause() => A-onPause() => F-onStop() => A-onStop() => F-onDestroyView() => F-onDestroy()
 *      => F-onDetach() => A-onDestroy()
 *  --其他
 *  跳转到下一个活动:onPause() => onStop() 回来:onStart() => onResume()
 *-描述--S2.静态Fragment的创建
 *  1.定义类继承Fragment 重写一些方法,绑定布局
 *  2.将Fragment加入到Activity的布局中( <fragment/> )
 *  在Xml了里面配置Fragment,当作一个控件来使用
 *
 *-描述--S3.动态Fragment的创建
 *  1.定义类继承Fragment
 *  2.在activity中添加Fragment
 *      1.获得碎片管理器
 *      2.通过管理器得到一个操作碎片的事务
 *      3.通过碎片事物操作碎片
 *
 *-描述--S4.Fragment的传值
 *  ---Fragment与Activity之间的传值
 *  方式一:拿到对方的对象
 *      如Activity拿到Fragment的对象 getSupportFragmentManager().findFragmentByTag("fragment1_tag")
 *      反过来getActivity()
 *  方式二:Activity传递给Fragment
 *      .setArguments(bundle)、getArguments()
 *  方式三:Fragment传递给Activity
 *      接口回调方式
 *
 *  ---Fragment之间的传值
 *  方式一:拿到对方的对象。获得Activity对象,通过Activity对象获得FragmentManager, 拿到Fragment的对象
 *      Fragment之间通过拿到对方的对象的方式传值,易发生空指针异常的问题。使用时要明确对应的生命周期方
 *      法,避免未创建时去获取了空引用引发空指针异常。当同时加载多个Fragment时,获取对方的引用应放在
 *      onActivityCreated()中,这时碎片已创建,获取到的引用才不会为空
 *  方式二:接口回调的方式
 *
 *-描述--S5.Fragment性能优化
 *
 *-描述--B1.None.
 *---------------------------------------------------------------------------*/
时间: 2024-10-29 19:05:44

Fragment总结的相关文章

Android 导航条效果实现(六) TabLayout+ViewPager+Fragment

TabLayout 一.继承结构 public class TabLayout extends HorizontalScrollView java.lang.Object ? android.view.View ? android.view.ViewGroup ? android.widget.FrameLayout ? android.widget.HorizontalScrollView ? android.support.design.widget.TabLayout 二.TabLayou

安卓性能优化之Activity和Fragment通过onSaveInstanceState()保存和恢复数据

Activity和Fragment 都有自己的生命周期,而且很类似.Fragment比Activity多了onAttach()和onCreateView()这些方法.整体它们两者是一样的周期,都会经历从创建视图( onCreate(),onCreateView(),onStart() )到暂停( onPause(), onStop() ) 到重新返回( onResume() ) 到最后销毁( onDetroyView(), onDestroy() ) 这些方法. 之前有提过,熟悉组件的这些生命周

fragment跳转

activity的布局代码: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match

FragmentTabHost切换Fragment避免重新加载Fragment,即重复调用Fragment的onCreateView

FragmentTabHost一切换再返回的时候Fragment就会调用onCreateView重新绘制页面,被这个问题坑了好久.刚开始也不知道是 FragmentTabHost还是Fragment的原因,网上找了好久也没找到解决办法.终于搜了好久还是找到了: 解决方法,在fragment onCreateView 里缓存View: private View rootView;// 缓存Fragment view @Override public View onCreateView(Layout

Fragment事务管理源码分析

概述 在Fragment使用中,有时候需要对Fragment进行add.remove.show.hide.replace等操作来进行Fragment的显示隐藏等管理,这些管理是通过FragmentTransaction进行事务管理的.事务管理是对于一系列操作进行管理,一个事务包含一个或多个操作命令,是逻辑管理的工作单元.一个事务开始于第一次执行操作语句,结束于Commit.通俗地将,就是把多个操作缓存起来,等调用commit的时候,统一批处理.下面会对Fragmeng的事务管理做一个代码分析 分

仿知乎程序 fragment的切换以及toolbar在不同页面下显示的menu不同

       我们在看知乎的时候,你会发现,首页,发现,关注,收藏,草稿这五项,你在点击之后进入到相应页面之后,侧滑菜单还在,你左侧滑一下,这个侧滑菜单还在,而提问,左滑屏幕,这个页面就没有,有点像返回上一页的感觉. 从操作来看,五页面应该是fragment之间的切换,而提问是单独的activity.     我们先从几个fragment入手,这里我们建立五fragment页,选择继承自android.support.v4.app.Fragment,因为这五个页面基本上都一样,就是简单的一个布局

对fragment的学习

一直对fragment一知半解,今天在运行一个项目的时候,有用到fragment,所以好好地复习了下fragment的知识: 1.fragment的生命周期: 2.在一个访问fragment中的资源可以在 public void onActivityCreated(Bundle savedInstanceState){}方法中 3. public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle save

Android Acitivity 与 Fragment 声明周期

Activity的生命周期: (1)启动Activity:系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态. (2)当前Activity被其他Activity覆盖其上或被锁屏:系统会调用onPause方法,暂停当前Activity的执行. Activity -> onFreeze() -> onPause() (3)当前Activity由被覆盖状态回到前台或解锁屏:系统会调用onResume方法,再次进入运行状态. (4)当前

Android - Fragment (三)不同Fragment之间的通信

在Fragment的java文件中,可以使用getActivity()来获得调用它的activity, 然后再找到另一个Fragment,进行通信 getActivity().getFragmentManager().findFragmentById(R.id.fragment_list); 但这样做耦合度太高,不方便后续的修改操作 Fragment与其附着的Activity之间的通信,都应该由Activity来完成 不能是多个Fragment之间直接通信 Fragment与其附着的Activi

Android Fragment 真正的完全解析(上)

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37970961 自从Fragment出现,曾经有段时间,感觉大家谈什么都能跟Fragment谈上关系,做什么都要问下Fragment能实现不~~~哈哈,是不是有点过~~~ 本篇博客力求为大家说明Fragment如何产生,什么是Fragment,Fragment生命周期,如何静态和动态的使用Fragment,Fragment回退栈,Fragment事务:以及Fragment的一些特