Android开发 Fragment的生命周期的介绍
文章目录1、Fragment的生命周期的介绍2、Fragment生命周期的特点3、Fragment使用建立与使用方法1、Fragment的生命周期的介绍fragment和activity一样,有四种状态,分别为活动状态(用户可见并且可以获取焦点)、暂停状态(部分可见,但不可获得焦点)、停止状态(完全不可见,无法获取焦点)、销毁状态(删除fragment或依附的activity被销毁)。生命周...
1、Fragment的生命周期的介绍
fragment和activity一样,有四种状态,分别为活动状态(用户可见并且可以获取焦点)、暂停状态(部分可见,但不可获得焦点)、停止状态(完全不可见,无法获取焦点)、销毁状态(删除fragment或依附的activity被销毁)。
生命周期的过程为
添加新的fragment
↓
onArrach()【将一个fragment关联到activity时调用】
↓
onCreate()【初始化fragment时调用】
↓
onActivity()【当activity完成自己的onOncreate()方法时调用】
↓
onStart()【此时fragment在UI可见】
↓
onResume()【fragment的UI和用户交互】
↓
onPause()【当Activity转为onPause状态时调用】
↓
onStop()【当有组件完全销毁或宿主Activity转为onStop时调用】
↓
onDestroyView()【fragment清理View时调用,即移除fragment视图】
↓
onDestroy()【fragment完成对View的清理的时候调用】
↓
onDetach()【当fragment从activity删除的时候调用】
2、Fragment生命周期的特点
①Activity直接影响fragment生命周期
②fragment相对于Activity多出的方法用于同Activity交互
③Activity进入运行状态,才允许添加或删除Fragment
④只有当Activity处于resumed状态时,Fragment生命周期才可以独立运转
⑤除此以外,其余阶段依赖于Activity的生命周期。
3、Fragment使用建立与使用方法
| 方法 | 功能 |
|---|---|
| add(int view,Object fragment) | 页面viewId对应的组件中增加对应的fragment |
| replace(int view,Object fragment) | 页面viewId对应的组件中内容替换成fragment |
| hide(Object fragment) | 隐藏对应的fragment |
| show(Object fragment) | 展示对应的fragment |
| commit() | 提交事务,使fragmentTransaction对象发生改变 |
xml页面代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android">
<FrameLayout
android:id="@+id/cs_fra"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
cs_fragmentActivity 代码
public class cs_fragmentActivity extends AppCompatActivity {
FragmentA fragmentA;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cs_fragment);
//注意这里用的Fragment FragmentManager FragmentTransaction 都是android.app下的,这个不可以选错,否则会报错
//获得fragment管理类
FragmentManager fragmentManager=getFragmentManager();
//建立fragment对象
FragmentTransaction fragmentTransaction=fragmentManager.beginTransaction();
//动态添加页面
fragmentTransaction.add(R.id.cs_fra,fragmentA);
}
}
FragmentA代码
package com.example.fragmentapplication;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.Nullable;
//注意 继承的是android.app下的Fragment ,否则会报错
public class FragmentAextends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.find_layout,null);
return view;
}
}
运行结果
更多推荐

所有评论(0)