Fragment的使用小结(一)
2016-10-15 00:15
260 查看
现在很多app应用都使用了Fragment,不仅仅是因为Fragment使得UI设计更加灵活,还有在性能上有大幅度提高,并且占用内存降低,在同样的界面Activity占用内存比Fragment要多,响应速度Fragment比Activty在中低端手机上快几倍!
官方介绍:
A Fragment represents a behavior or a portion of user interface in an Activity. You can combine multiple fragments in a single activity to build a multi-pane UI and reuse a fragment in multiple activities. You can think of a fragment as a modular section of an activity, which has its own lifecycle, receives its own input events, and which you can add or remove while the activity is running (sort of like a “sub activity” that you can reuse in different activities).
翻译: Fragment是Activity的一部分内容. 你可以在一个单独的Activity中合并放置多个Fragment, 用来构建一个多面板的UI界面, 并且还可以复用Fragment在多个Activity. 可以把他想成是Activity的一个子模块. 你可以在Activity运行时, 添加或移除Fragment.拥有自己的生命周期, 接收自己的事件.(类似于一个可以在不同Activity种复用的子Activity)。本篇文章我主要介绍以下几个基础知识点,下篇重点说明Fragment与Fragment、Activity通信:
Fragment的创建和使用
Fragment的生命周期
Fragment常用方法 add(), show(), hide(), replace()
一.Fragment的创建和使用
静态创建
注意:
1. 配置andriod:name指定在layout中实例化的Fragment类
2. 至少配置 id 或 tag, 否则会抛异常
1.在布局文件中添加Fragment的布局中配置fragment标签
2.创建Fragment的布局文件
3.创建Fragment, 重写onCreateView, 配置真正内容
动态创建
1. 在layout布局中添加一个布局容器
2.创建Fragment, 重写onCreateView, 配置真正内容
3.通过Fragment管理器添加/替换Fragment
Fragment的向下兼容
Fragment是在Andriod3.0才出现的. API11
v4包提供了Fragment, 将Fragment兼容到3.0及以下版本.
不同的地方:
Fragment继承 android.support.v4.app.Fragment
Activity继承 android.support.v4.app.FragmentActivity
getFragmentManager() -> getSupportFragmentManager() 获取管理器
二 .Fragment的生命周期
Fragment总是必须被嵌入到一个activity中。它们的生命周期直接受其宿主activity的生命周期影响。
onAttach()
当fragment被绑定到activity时被调用(Activity会被传入)。
onCreateView()
创建和fragment关联的view hierarchy时被调用。
onActivityCreated()
当activity的onCreate()方法返回时被调用。
onDestroyView()
当和fragment关联的view hierarchy被移除时调用。
onDetach()
当fragment从activity解除关联时被调用。
注意
通过布局文件的fragment标签关联的Fragment的生命周期
特点:跟Activity的生命周期高度的吻合。
通过代码动态添加的Fragment的生命周期
特点:当提交事务之后,才会走生命周期方法。
activity和fragment的生命周期最显著的差异是各自如何在它的后台堆栈中储存。默认情况下,activity在停止后,它会被放到一个由系统管理的用于保存activity的back stack(因此用户可以使用BACK按键导航回退)。但是,当你在一个事务期间移除fragment时,只有显式调用addToBackStack()请求保存实例,才会被放到一个由宿主activity管理的back stack(会退栈)。
三. Fragment常用方法(add(), show(), hide(), replace())
通过add方法(效率高)
特点:第一次add的时候执行生命周期方法,之后的show和hide是不影响生命周期的
通过Replace方法(少,效率低)
特点:没replace一次,就会把之前老的Fragment给销毁掉,然后重新创建一个新的。
注意:如果你的app有大量图片,这时更好的方式可能是replace,配合你的图片框架在Fragment视图销毁时,回收其图片所占的内存。
官方介绍:
A Fragment represents a behavior or a portion of user interface in an Activity. You can combine multiple fragments in a single activity to build a multi-pane UI and reuse a fragment in multiple activities. You can think of a fragment as a modular section of an activity, which has its own lifecycle, receives its own input events, and which you can add or remove while the activity is running (sort of like a “sub activity” that you can reuse in different activities).
翻译: Fragment是Activity的一部分内容. 你可以在一个单独的Activity中合并放置多个Fragment, 用来构建一个多面板的UI界面, 并且还可以复用Fragment在多个Activity. 可以把他想成是Activity的一个子模块. 你可以在Activity运行时, 添加或移除Fragment.拥有自己的生命周期, 接收自己的事件.(类似于一个可以在不同Activity种复用的子Activity)。本篇文章我主要介绍以下几个基础知识点,下篇重点说明Fragment与Fragment、Activity通信:
Fragment的创建和使用
Fragment的生命周期
Fragment常用方法 add(), show(), hide(), replace()
一.Fragment的创建和使用
静态创建
注意:
1. 配置andriod:name指定在layout中实例化的Fragment类
2. 至少配置 id 或 tag, 否则会抛异常
1.在布局文件中添加Fragment的布局中配置fragment标签
<fragment android:id="@+id/fragment_first" android:tag="first" android:name="cn.huyaru.com.fragmentdemo.FirstFragment" android:layout_width="match_parent" android:layout_height="match_parent" />
2.创建Fragment的布局文件
3.创建Fragment, 重写onCreateView, 配置真正内容
public class FirstFragment extends Fragment { // 重写 onCreateView 配置布局内容 /** * @param inflater 布局填充器, 打气筒 * @param container Fragment所在的布局容器 * @param savedInstanceState 之前保存的状态 * @return */ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { /** * resource:Fragment需要加载的布局文件 * root:加载layout的父ViewGroup * at 4000 tactToRoot:false,不返回父ViewGroup * */ View rootView = inflater.inflate(R.layout.fragment_first , container , false); return rootView; } }
动态创建
1. 在layout布局中添加一个布局容器
<FrameLayout android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent" > </FrameLayout>
2.创建Fragment, 重写onCreateView, 配置真正内容
3.通过Fragment管理器添加/替换Fragment
// 1. 获取Fragment管理器. FragmentManager fm = getFragmentManager(); // 2. 开启Fragment处理事务. FragmentTransaction ft = fm.beginTransaction(); // 3. 进行Fragment操作 ft.replace(R.id.container, new FirstFragment()); // 4. 进行事务的提交 ft.commit();
Fragment的向下兼容
Fragment是在Andriod3.0才出现的. API11
v4包提供了Fragment, 将Fragment兼容到3.0及以下版本.
不同的地方:
Fragment继承 android.support.v4.app.Fragment
Activity继承 android.support.v4.app.FragmentActivity
getFragmentManager() -> getSupportFragmentManager() 获取管理器
二 .Fragment的生命周期
Fragment总是必须被嵌入到一个activity中。它们的生命周期直接受其宿主activity的生命周期影响。
onAttach()
当fragment被绑定到activity时被调用(Activity会被传入)。
onCreateView()
创建和fragment关联的view hierarchy时被调用。
onActivityCreated()
当activity的onCreate()方法返回时被调用。
onDestroyView()
当和fragment关联的view hierarchy被移除时调用。
onDetach()
当fragment从activity解除关联时被调用。
注意
通过布局文件的fragment标签关联的Fragment的生命周期
特点:跟Activity的生命周期高度的吻合。
通过代码动态添加的Fragment的生命周期
特点:当提交事务之后,才会走生命周期方法。
activity和fragment的生命周期最显著的差异是各自如何在它的后台堆栈中储存。默认情况下,activity在停止后,它会被放到一个由系统管理的用于保存activity的back stack(因此用户可以使用BACK按键导航回退)。但是,当你在一个事务期间移除fragment时,只有显式调用addToBackStack()请求保存实例,才会被放到一个由宿主activity管理的back stack(会退栈)。
三. Fragment常用方法(add(), show(), hide(), replace())
通过add方法(效率高)
特点:第一次add的时候执行生命周期方法,之后的show和hide是不影响生命周期的
通过Replace方法(少,效率低)
特点:没replace一次,就会把之前老的Fragment给销毁掉,然后重新创建一个新的。
注意:如果你的app有大量图片,这时更好的方式可能是replace,配合你的图片框架在Fragment视图销毁时,回收其图片所占的内存。
相关文章推荐
- PreferenceFragment 使用 小结
- PreferenceFragment 使用 小结
- PreferenceFragment 使用 小结
- PreferenceFragment 使用 小结
- Fragment加Viewpager的使用小结
- Fragment的使用与通信方式小结
- PreferenceFragment 使用 小结
- Android,使用activity与fragment的小结与使用的细节
- Fragment使用小结(三)
- Fragment使用小结
- PreferenceFragment 使用 小结
- Fragment生命周期和使用小结
- Fragment使用小结
- Android Fragment使用小结
- UrlReWriter 使用经验小结
- treeview的使用小结
- TChart使用经验小结
- vi编辑器的学习使用(小结)
- c#.NET使用小结(1)
- treeview的使用小结