fred-ye / summary

my blog
43 stars 9 forks source link

[Android]Fragment的基本使用 #38

Open fred-ye opened 9 years ago

fred-ye commented 9 years ago

Anroid中Fragment的基本使用

Fragment是在android 3.0之后才开始有的组件,所以如果App支持的最小版本是在android 3.0之前,需要引入Support Library. FragmentActivity是Support Library提供的一个特殊的Activity,用来在API 11以下的系统中处理fragment,如果我们App的最低版本大于等于11,可以使用普通的Activity.

Fragment的创建

创建Fragment,唯一一个需要重写的回调方法就是onCreateView()。Fragment是一个UI组件,每一个Fragment的实例都必须与一个FragmentActivity关联起来,最简单的一种方式便是在Activity的布局文件中定义每一个fragment来实现这种关联。即采用<fragment android:name=“com.test.TestFragment">采用这种方式,Fragment是不能被动态移除的,如果想在用户交互时把fragment切入与切出,就必须在activity启动后,再将fragment添加到Activity 中。 采用这种方式时,Fragment所在的Activity必须要是继承自FragmentActivity.

Fragment的操作

在Activity的生命周期内我们可以添加,移除,替换Activity,所有的这些操作是通来FragmentManager, FragmentTransaction来执行的。 Fragment的添加 (1)在Activity中添加一个<FrameLayout>用来放置Fragment。 (2)New 一个Fragment。 (3)调用getSupportFragmentManager().beginTransaction()方法获得一个Transaction,调用 Transaction的add()方法添加一个fragment。 (4) 操作完成后,调用transaction的commit()方法提交更改。

_Fragment的替换 _ Fragment的替换和Fragment的添加基本上没有什么区别,只是调用的是replace()方法而不是add()方法。

Fragment的生命周期

Fragment有自己的生命周期,但它的生命周期依赖于它所在的Activity. 当activity被销毁时,它里面所有的Fragment都将被销毁。 需要注意一点,不要为Fragment添加新的构造方法,因为系统在初始化Fragment 时会调用Fragment的无参构造方法,如果没有找到,将会抛一个exception。虽然可以采用在自定义的构造方法中再调一次无参的构造方法也可以完成Fragment的初始化,通常不建议这样做,自定义构造方法无非就是为了为Fragment初始传参。但采用fragment.setArguments() 这种方式更加合适。

Fragment的生命周期方法:

onAttach(Activity) onCrate(Bundle) onCreateView() onActivityCreate() onStart() onResume()

销毁时的操作:

onPause :Fragment不能和用户交互,因为activity 也处于paused状态,或者Activity对Fragment进行某些操作。 onStop() Fragment不可见 onDestoryView() : fragment开始清理resource onDestory(): 清理Activity的状态 onDetach(): Fragment彻底与activity分离。