安卓开发_深入理解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 基本属 ...
随机推荐
- Appium同时连接多台手机进行测试(多线程)
作为测试小白,当时遇到了N多问题: 开启多线程后,发现app启动后,用例就停止了:且启动app对应的手机不能正确对应,用例中是A手机跑A用例,结果启动了B手机跑A用例报错. 主要原因:Appium S ...
- LeetCode:149_Max Points on a line | 寻找一条直线上最多点的数量 | Hard
题目:Max Points on a line Given n points on a 2D plane, find the maximum number of points that lie on ...
- 一站式SpringBoot for NoSQL Study Tutorial 开发教程学习手册
SpringBoot2.0 + NoSQL使用教程,项目名称:“SpringBoot2NoSQL” 项目地址: https://gitee.com/475660/SpringBoot2NoSQL 项目 ...
- Xamarin.Android 记住账号
1.存储登陆信息 if(login_cb_user.Checked) { ISharedPreferences prefs = PreferenceManager.GetDefaultSharedPr ...
- 如何将页面上的数据导入excel中
网上关于页面数据导入excel的文章很多,但是大部分都是关于 ActiveXObject 对象,可是ActiveXObject 对象是只支持IE的,可我连IE11也测试了,还是无法识别,又查到消息,好 ...
- Rsync文件同步工具
前段时间因公司需求,需要把备份的文件进行同步保存,后面就想到了我们大家都最熟悉的文件同步工作Rsync,于是就捣鼓了一下午时间,然后总结了下大概过程和参数详情. 首先了解了下rsync同步的大致原理: ...
- 如何在IDEA里给大数据项目导入该项目的相关源码(博主推荐)(类似eclipse里同一个workspace下单个子项目存在)(图文详解)
不多说,直接上干货! 如果在一个界面里,可以是单个项目 注意:本文是以gradle项目的方式来做的! 如何在IDEA里正确导入从Github上下载的Gradle项目(含相关源码)(博主推荐)(图文详解 ...
- salesforce lightning零基础学习(七) 列表展示数据时两种自定义编辑页面
上一篇Lightning内容描述的是LDS,通过LDS可以很方便的实例化一个对象的数据信息.当我们通过列表展示数据需要编辑时,我们常使用两种方式去处理编辑页面:Pop Up Window弹出修改详情以 ...
- docker化java web应用
一.简介 Docker是一个使用Go语言开发的开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的机器上.Docker的发展速度和火爆程度着实令人惊叹,一 ...
- 史上最详细nodejs版本管理器nvm的安装与使用(附注意事项和优化方案)
使用场景 在Node版本快速更新迭代的今天,新老项目使用的node版本号可能已经不相同了,node版本更新越来越快,项目越做越多,node切换版本号的需求越来越迫切,传统卸载一个版本在安装另一个版本的 ...