可以看到Fragment比Activity多了几个额外的生命周期回调方法:
onAttach(Activity)
当Fragment与Activity发生关联时调用。
onCreateView(LayoutInflater, ViewGroup,Bundle)
创建该Fragment的视图
onActivityCreated(Bundle)
当Activity的onCreate方法返回时调用
onDestoryView()
与onCreateView想对应,当该Fragment的视图被移除时调用
onDetach()
与onAttach相对应,当Fragment与Activity关联被取消时调用
注意:除了onCreateView,其他的所有方法如果你重写了,必须调用父类对于该方法的实现,
package com.example.fragmentgather;
import android.app.Activity;
import android.app.Fragment;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
public class MyFragment3 extends Fragment {
private TextView tv;
//演示步骤步骤
// 启动Fragment——>屏幕锁屏——>屏幕解锁——>
//切换到其他的Fragment——>回到桌面——>回到应用——>退出Fragment
/**
* 每次创建都会绘制Fragment的View组件时回调该方法
*/
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment2, container, false);
TextView tv = (TextView) view.findViewById(R.id.text);
tv.setText("第一个Fragment");
Log.i("Main", "Fragment1---onCreateView()");
return view;
}
/**
* 当Fragment被添加到Activity时候会回调这个方法,并且只调用一次
*/
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
Log.i("Main", "Fragment1---onAttach()");
}
/**
* 创建Fragment时会回调,只会调用一次
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.i("Main", "Fragment1---onCreate()");
}
/**
* 当Fragment所在的Activty启动完成后调用
*/
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
Log.i("Main", "Fragment1---onActivityCreated()");
}
/**
* 启动Fragment
*/
@Override
public void onStart() {
super.onStart();
Log.i("Main", "Fragment1---onStart()");
}
/**
* 恢复Fragment时会被回调,调用onStart()方法后面一定会调用onResume()方法
*/
@Override
public void onResume() {
super.onResume();
Log.i("Main", "Fragment1---onResume()");
}
/**
* 暂停Fragment
*/
@Override
public void onPause() {
super.onPause();
Log.i("Main", "Fragment1---onPause()");
}
/**
* 停止Fragment
*/
@Override
public void onStop() {
super.onStop();
Log.i("Main", "Fragment1---onStop()");
}
/**
* 销毁Fragment所包含的View组件时
*/
@Override
public void onDestroyView() {
super.onDestroyView();
Log.i("Main", "Fragment1---onDestroyView()");
}
/**
* 销毁Fragment时会被回调
*/
@Override
public void onDestroy() {
super.onDestroy();
Log.i("Main", "Fragment1---onDestroy()");
}
/**
* Fragment从Activity中删除时会回调该方法,并且这个方法只会调用一次
*/
@Override
public void onDetach() {
super.onDetach();
Log.i("Main", "Fragment1---onDetach()");
}
}
09-20 23:42:35.021 3222-3222/com.example.fragmentgather E/Main: Fragment1---onAttach()
09-20 23:42:35.021 3222-3222/com.example.fragmentgather E/Main: Fragment1---onCreate()
09-20 23:42:35.021 3222-3222/com.example.fragmentgather E/Main: Fragment1---onCreateView()
09-20 23:42:35.021 3222-3222/com.example.fragmentgather E/Main: Fragment1---onActivityCreated()
09-20 23:42:35.021 3222-3222/com.example.fragmentgather E/Main: Fragment1---onStart()
09-20 23:42:35.021 3222-3222/com.example.fragmentgather E/Main: Fragment1---onResume()f
锁屏
09-20 23:43:19.261 3222-3222/com.example.fragmentgather E/Main: Fragment1---onPause()
09-20 23:43:19.265 3222-3222/com.example.fragmentgather E/Main: Fragment1---onStop()
解锁
09-20 23:43:25.821 3222-3222/com.example.fragmentgather E/Main: Fragment1---onStart()
09-20 23:43:25.821 3222-3222/com.example.fragmentgather E/Main: Fragment1---onResume()
切换到第一个
09-20 23:44:24.841 3222-3222/com.example.fragmentgather E/Main: Fragment1---onPause()
09-20 23:44:24.841 3222-3222/com.example.fragmentgather E/Main: Fragment1---onStop()
09-20 23:44:24.841 3222-3222/com.example.fragmentgather E/Main: Fragment1---onDestroyView()
09-20 23:44:24.841 3222-3222/com.example.fragmentgather E/Main: Fragment1---onDestroy()
09-20 23:44:24.841 3222-3222/com.example.fragmentgather E/Main: Fragment1---onDetach()
切换到第二个
09-20 23:44:42.441 3222-3222/com.example.fragmentgather E/Main: Fragment1---onAttach()
09-20 23:44:42.441 3222-3222/com.example.fragmentgather E/Main: Fragment1---onCreate()
09-20 23:44:42.445 3222-3222/com.example.fragmentgather E/Main: Fragment1---onCreateView()
09-20 23:44:42.445 3222-3222/com.example.fragmentgather E/Main: Fragment1---onActivityCreated()
09-20 23:44:42.445 3222-3222/com.example.fragmentgather E/Main: Fragment1---onStart()
09-20 23:44:42.445 3222-3222/com.example.fragmentgather E/Main: Fragment1---onResume()