Fragment使用详解

来源:互联网 发布:跳跃网络签到不能用 编辑:程序博客网 时间:2024/06/03 09:24

一、Fragment:

Fragment 表示 Activity 中的行为或用户界面部分。可以将片段视为 Activity 的模块化组成部分,它具有自己的生命周期,能接收自己的输入事件,并且可以在 Activity 运行时添加或移除片段。其引入目的是在不同尺寸的设备中灵活的使用,如手机上,用列表和详情在两个Activity中使用,但在pad中可以使用左侧列表,右侧详情的activity。

生命周期:onAttach() -> onCreate() -> onCreateView() -> onActivityCreated() -> onStart() -> onRsume() -> onPause() -> onStop() -> onDestroyView() -> onDestroy() -> onDetach();

注意:有时候会在onDestroyView之后会重新onCreateView(),比如在FragmentPagerAdapter()中,保存当前的Fragment状态,但是不保存其试图,每次都要重新创建。

二、使用概述:

1)比较重要的生命周期:onCreateView():用以创建展示的View;

2)在layout中添加fragment;

<fragment android:name="com.example.ExampleFragment"            android:id="@+id/list"            android:layout_weight="1"            android:layout_width="0dp"            android:layout_height="match_parent" />

3)在代码中添加

FragmentManager fragmentManager = getFragmentManager();FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();ExampleFragment fragment = new ExampleFragment();fragmentTransaction.add(R.id.fragment_container, fragment);fragmentTransaction.commit();

三、其他知识点

1.用无UI的Fragment保存状态,主要用于当activity被异常终结时,保存一些状态,比如运行一个子线程;

2.fragment事务提交时,如果使用addToBackStack方法,则会将该事务所有步骤添加到返回栈,按返回键会将他们一并撤销;

3.同Activity一样,Fragment也可以使用onSaveInstanceState()来保存状态,并在onCreate()、onCreateVIew()或onActivityCreated()恢复。

四、fragment与activity之间的通信

1.通过正常的setArguments()方法

2.在activity可以通过创建Fragment引用(或者findFragmentByTag()、findFragmentById()获得)来直接操作Fragment;

3.在fragment可以通过getActivity()获取到Activity,再向下转型为对应的Activity。

4.在Fragment中创建一个回调接口,之后宿主Activity会实现该接口,并且Fragment在onAttach()方法中注册(在哪注册也看需求)。

5.用事件总线框架,比如EventBus以及otto等。

6.按照官方文档所说,不应该让两个Fragment进行直接的通信,为了降低组件间的耦合,以便复用。此时采用4中的回调方法,通过Activity来实现间接的通信。例如:FragmentA点击列表,然后回调Activity中实现的接口,在回调中activity调用FragmentB的更新方法,实现Fragment间的通信。

0 0
原创粉丝点击