美文网首页
学习Android官方文档(二)--Fragment

学习Android官方文档(二)--Fragment

作者: 武曌思 | 来源:发表于2017-03-16 11:42 被阅读0次

1、Fragment的创建

(1)尽量使用v4包中的Fragment

(2)必须重写onCreateView()方法,使用inflater,从xml布局文件加载一个布局并返回。

注意:

1)传递至onCreateView()的container参数是您的 Fragment 布局将插入到的父 ViewGroup(来自 Activity 的布局)。savedInstanceState参数是在恢复 Fragment 时,提供上一 Fragment 实例相关数据的Bundle处理 Fragment 生命周期部分对恢复状态做了详细阐述)。

2)inflate(int resource,ViewGroup root, boolean attachToRoot)方法带有三个参数:

resource:您想要扩展的布局的资源 ID;

root:将作为扩展布局父项的ViewGroup。传递container对系统向扩展布局的根视图(由其所属的父视图指定)应用布局参数具有重要意义;

attachToRoot:指示是否应该在扩展期间将扩展布局附加至ViewGroup(第二个参数)的布尔值。(在本例中,其值为 false,因为系统已经将扩展布局插入container— 传递 true 值会在最终布局中创建一个多余的视图组。)

(3)传参

一般使用 Fragment,直接使用 new,如果有参数,直接在构造方法中传入。但这样会有问题,比如当屏幕方向发生变化,Fragment 中的数据就会丢失。原因是系统会重新构造一个新的 Fragment,调用的是无参的构造方法,因此你传入的数据都会丢失。

解决方案:使用 Fragment.setArguments(Bundle) 进行传参。因为 Bundle 会被保存下来,当重新构建 Fragment 时,Bundle 仍然有效。

2、Fragment与Activity生命周期对应关系

3、Fragment管理及其事务

(1)Fragment管理使用FragmentManager,可从Activity中调用getSupportFragmentManager() 来获取。

(2)Fragment事务使用FragmentTransaction来完成,调用add()remove()replace()等方法为给定事务设置您想要执行的所有更改。然后,要想将事务应用到 Activity,您必须调用commit()

FragmentTransaction可以通过FragmentManager.beginTransaction()来获取。

4、与Activity之间通信

(1)简单的:Fragment可以通过getActivity()来访问Activity,Activity也可以通过findFragmentById()或Tag的方式访问Fragment,当然亦可以通过FragmentManager。

(2)重点:使用回调的方式

在某些情况下,您可能需要通过 Fragment 与 Activity 共享事件。执行此操作的一个好方法是,在 Fragment 内定义一个回调接口,并要求宿主 Activity 实现它。 当 Activity 通过该接口收到回调时,可以根据需要与布局中的其他 Fragment 共享这些信息。

步骤:

1)Fragment 创建回调接口,并保留一个引用 mCallBack

2)宿主 Activity 实现回调接口

3)通过 Fragment 的 onAttach(Activity activity) 方法实例化 mCallBack

4)在 Fragment 中触发响应事件时,调用接口方法,实现共享信息

以上所有均参考Android开发者--Fragment文档

相关文章

网友评论

      本文标题:学习Android官方文档(二)--Fragment

      本文链接:https://www.haomeiwen.com/subject/obwdnttx.html