安卓开发_深入理解Activity和Fragment的关系
Fragment(碎片)是必须嵌入在 Activity(活动) 中使用的。Fragment的生命周期随着Activity的生命周期的变化而变化
一、首先让我们看下Activity和Fragment的生命周期对比

二、通过代码来看一下
package com.xqx_life; import android.os.Bundle;
import android.app.Activity;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.view.Menu; public class MainActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MyFragment fragment = new MyFragment();
FragmentManager manager = getFragmentManager();
FragmentTransaction action = manager.beginTransaction();
action.add(R.id.show_fragment,fragment );
action.commit(); System.out.println("现在执行Activity的 onCreate()方法");
} @Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
System.out.println("现在执行Activity的 onStart()方法");
} @Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
System.out.println("现在执行Activity的 onResume()方法");
} @Override
protected void onRestart() {
// TODO Auto-generated method stub
super.onRestart();
System.out.println("现在执行Activity的 onRestart()方法");
} @Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
System.out.println("现在执行Activity的 onPause()方法");
} @Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
System.out.println("现在执行Activity的 onStop()方法");
} @Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
System.out.println("现在执行Activity的 onDestroy()方法");
} }
Activity
package com.xqx_life; import android.app.Activity;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup; public class MyFragment extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
System.out.println("现在执行Fragment的 onCreateView()方法");
View view = inflater.inflate(R.layout.layout_fragment, container, false);
return view;
} @Override
public void onAttach(Activity activity) {
// TODO Auto-generated method stub
System.out.println("现在执行Fragment的 onAttach()方法");
super.onAttach(activity);
} @Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
System.out.println("现在执行Fragment的 onCreate()方法");
super.onCreate(savedInstanceState);
} @Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
System.out.println("现在执行Fragment的 onActivityCreated()方法");
super.onActivityCreated(savedInstanceState);
} @Override
public void onStart() {
// TODO Auto-generated method stub
System.out.println("现在执行Fragment的 onStart()方法");
super.onStart();
} @Override
public void onResume() {
// TODO Auto-generated method stub
System.out.println("现在执行Fragment的 onResume()方法");
super.onResume();
} @Override
public void onPause() {
// TODO Auto-generated method stub
System.out.println("现在执行Fragment的 onPause()方法");
super.onPause();
} @Override
public void onStop() {
// TODO Auto-generated method stub
System.out.println("现在执行Fragment的 onStop()方法");
super.onStop();
} @Override
public void onDestroyView() {
// TODO Auto-generated method stub
System.out.println("现在执行Fragment的 onDestroyView()方法");
super.onDestroyView();
} @Override
public void onDestroy() {
// TODO Auto-generated method stub
System.out.println("现在执行Fragment的 onDestroy()方法");
super.onDestroy(); } @Override
public void onDetach() {
// TODO Auto-generated method stub
System.out.println("现在执行Fragment的 onDetach()方法");
super.onDetach();
} }
Fragment
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" > </LinearLayout>
fragment布局
注意清单文件最低SDK版本要设置为11
<uses-sdk
android:minSdkVersion=""
android:targetSdkVersion="" />
看一下效果:
启动activity之后的生命

关闭activity 结束之前的生命

安卓开发_深入理解Activity和Fragment的关系的更多相关文章
- 安卓开发_深入理解Content Provider
一.Content Provider概述 Content Provider用于保存和获取数据,并使其对所有应用程序可见,这是不同应用程序之间共享数据的唯一方式,因为在Android中没有提供所有应用可 ...
- 安卓开发_深入理解Handler消息传递机制
一.概述 因为子线程的run()方法无法修改UI线程(主线程)的UI界面,所以Android引入了Handler消息传递机制,实现在新创建的线程中操作UI界面 二.消息类(Message) 消息类是存 ...
- 安卓开发_浅谈Fragment之ListFragment
ListFragment,即Fragment的一个子类,当我们用的一个Fragment只需要一个listview视图的时候使用 该类有几个特点: 1.ListFragment 本身具只有一个ListV ...
- 安卓开发_深入学习ViewPager控件
一.概述 ViewPager是android扩展包v4包(android.support.v4.view.ViewPager)中的类,这个类可以让用户左右切换当前的view. ViewPager特点: ...
- 安卓开发_浅谈ListView(SimpleAdapter数组适配器)
安卓开发_浅谈ListView(ArrayAdapter数组适配器) 学习使用ListView组件和SimapleAdapter适配器实现一个带图标的ListView列表 总共3部分 一.MainAc ...
- 安卓开发_数据存储技术_sqlite
一.SQLite SQLite第一个Alpha版本诞生于2000年5月,它是一款轻量级数据库,它的设计目标是嵌入式的,占用资源非常的低,只需要几百K的内存就够了.SQLite已经被多种软件和产品使用 ...
- 安卓开发_浅谈ListView(自定义适配器)
ListView作为一个实际开发中使用率非常高的视图,一般的系统自带的适配器都无法满足开发中的需求,这时候就需要开发人员来自定义适配器使得ListView能够有一个不错的显示效果 有这样一个Demo ...
- 安卓开发_数据存储技术_SharedPreferences类
SharedPreferences类 供开发人员保存和获取基本数据类型的键值对. 该类主要用于基本类型,例如:booleans,ints,longs,strings.在应用程序结束后,数据仍旧会保存. ...
- 安卓开发_浅谈Android动画(四)
Property动画 概念:属性动画,即通过改变对象属性的动画. 特点:属性动画真正改变了一个UI控件,包括其事件触发焦点的位置 一.重要的动画类及属性值: 1. ValueAnimator 基本属 ...
随机推荐
- Swift5 语言指南(十三) 方法
方法是与特定类型相关联的函数.类,结构和枚举都可以定义实例方法,这些方法封装了用于处理给定类型的实例的特定任务和功能.类,结构和枚举也可以定义类型方法,它们与类型本身相关联.类型方法类似于Object ...
- ajax 请求被终止 chrome查询发现请求状态status为canceled
检查页面的network执行中发现页面被刷新了url改变了导致请求在请求过程中被终止了. 检查代码发现在 submit方法中最后写了个 location.reload();方法 来重载页面 虽然是卸 ...
- odoo开发笔记 -- 后台日志输出及分析
odoo开发笔记 -- 后台日志输出及分析 附:日志分析软件
- 如何从GitHub仓库clone项目
自己也已经多次接触了git了,但是因为工作用svn,自己平时也很少用git,所以每次都是用的时候可能还可以,等过一段时间再来用的时候,就又忘得差不多了,所以索性自己写个博客,自己记得自己也好懂,而且熟 ...
- 对nginx中location的认识
关于一些对location认识的误区 1.location的匹配顺序是“先匹配正则,在匹配普通”. location的匹配顺序其实是“先匹配普通,在匹配正则”.造成误解的原因是:正则匹配会覆盖普通匹配 ...
- docker+nginx实现负载均衡
配置nginx配置文件(配置文件运行时是会加载到docker进程中)先建立nginx相关文件和目录,对应下面启动命令中的挂载位置,把主配置文件nginx.conf放到对应位置“/etc/docker/ ...
- 全网最详细的一个超级好用的命令行工具【Cmder】是什么?
不多说,直接上干货! Cmder是什么? 一款Windows环境下非常简洁美观易用的cmd替代者,它支持了大部分的Linux命令.支持ssh连接linux,使用起来非常方便.比起cmd.powersh ...
- interface21 - web - ContextLoaderListener(Spring Web Application Context加载流程)
前言 最近打算花点时间好好看看spring的源码,然而现在Spring的源码经过迭代的版本太多了,比较庞大,看起来比较累,所以准备从最初的版本(interface21)开始入手,仅用于学习,理解其设计 ...
- leetcode — palindrome-number
import org.lep.leetcode.parseint.IntegerParser; /** * Source : https://oj.leetcode.com/problems/pali ...
- jquery实现点击文字后变成文本框且可修改
$(function() { //获取class为caname的元素 $(".caname").click(function() { var td = $(this); var t ...