在看本文前,请参考这篇讲解Activity生命周期的博客:
COCO的android学习之路第2章(1)—活动的生命周期
http://www.jyguagua.com/?p=1464
这一节我们主要来探索下fragment的生命周期,同样的,在上一节的代码中,我们对Fragment1.java加入如下代码,重写父类的方法,代码如下:
1:重写父类的onActivityCreated,onAttach,onCreate,onDestroy,onDestroyView,onDetach方法;
package com.example;
import com.example.fragments.R;
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;
public class Fragment1 extends Fragment {
String tag = "fragment1";
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
Log.d(tag, "onCreateView");
// TODO Auto-generated method stub
return inflater.inflate(R.layout.fragment1, container, false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
Log.d(tag, "onActivityCreated");
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
}
@Override
public void onAttach(Activity activity) {
Log.d(tag, "onAttach");
// TODO Auto-generated method stub
super.onAttach(activity);
}
@Override
public void onCreate(Bundle savedInstanceState) {
Log.d(tag, "onCreate");
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
}
@Override
public void onDestroy() {
Log.d(tag, "onDestroy");
// TODO Auto-generated method stub
super.onDestroy();
}
@Override
public void onDestroyView() {
Log.d(tag, "onDestroyView");
// TODO Auto-generated method stub
super.onDestroyView();
}
@Override
public void onDetach() {
Log.d(tag, "onDetach");
// TODO Auto-generated method stub
super.onDetach();
}
@Override
public void onPause() {
Log.d(tag, "onPause");
// TODO Auto-generated method stub
super.onPause();
}
@Override
public void onResume() {
Log.d(tag, "onResume");
// TODO Auto-generated method stub
super.onResume();
}
@Override
public void onStart() {
Log.d(tag, "onStart");
// TODO Auto-generated method stub
super.onStart();
}
@Override
public void onStop() {
Log.d(tag, "onStop");
// TODO Auto-generated method stub
super.onStop();
}
}
2:运行程序,然后我们在模拟器分别点击home键,点击返回键然后观察log输出,如下:
总结下,我们发现fragment的生命周期是这样的:
当创建一个Fragment的时候,会调用如下函数:
➤ onAttach()
➤ onCreate()
➤ onCreateView()
➤ onActivityCreated()
当Fragment被切换至后台不可见的话,调用如下:
➤ onStart()
➤ onResume()
当Fragment从后台重新调到前台时,调用如下:
➤ onPause()
➤ onStop()
当Fragment被返回键销毁时调用如下:
➤ onPause()
➤ onStop()
➤ onDestroyView()
➤ onDestroy()
➤ onDetach()
然后下面我们再来演示下fragment之间的组件数据信息传递,我们需要做的是在Fragment2的界面放置一个按钮,然后将Fragment1中的一个label上内容获取到,具体方法如下所示:
1:对Fragment1,fragment2的布局文件加入一些组件
2:对Fragment2重写onStart()方法,用来加入对Fragment2上面的按钮的监听事件;
3:下面便是演示的效果,点击Fragment2的按钮,然后获取到Fragment1中的TextView内容并通过Toast来显示。
1:Fragment的生命周期;
2:Fragment之间如何数据传递;
3:Fragment2中的按键监听事件通过匿名内部类来实现,也是一种新的按键click事件处理方法。
文章的脚注信息由WordPress的wp-posturl插件自动生成









微信扫一扫,打赏作者吧~![[整理]Android按键点击处理的4种方法](http://www.jyguagua.com/wp-content/themes/begin/img/random/8.jpg)
![[已解决]win7 64位 CDC驱动无法安装 USB Dongle CDC驱动无法安装](http://www.jyguagua.com/wp-content/themes/begin/timthumb.php?src=http://www.jyguagua.com/wp-content/uploads/2015/05/pic_thumb.jpg&w=280&h=210&zc=1)
![[分享]新入手moto 360后的一些资料参考](http://www.jyguagua.com/wp-content/themes/begin/img/random/20.jpg)
![[分享]Samsung Galaxy Note3 USB驱动](http://www.jyguagua.com/wp-content/themes/begin/img/random/2.jpg)