11_android入门_Fragment的生命周期

1、Fragment的几种状态  

   1.运行状态 活动状态  Fragment位于前台,用户可见,可以获得焦点

   2.暂停状态:依然可见,但不能获取焦点

   3.停止状态:不可见,失去焦点

   4.销毁状态:所在的activity被结束。Fragment被完全删除

 

2、生命周期的过程演示

①第一次进入界面:

②点击按钮:弹出对话框风格 Activity

③关闭对话框时:

④按下

⑤再次进入:

⑥按下

⑦再进入:

⑧按下

 

3、上面操作的分析:

   1.运行状态 进入界面

   2.暂停状态:弹出activity的对话框这样操作

   3.停止状态 按下的时候停止状态

   4.销毁状态:按下

 

4、下面是案列说明,请仔细阅读:

package com.example.fragment.fragment;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.example.fragment.DialogActivity;
import com.example.fragment.R;

/**
 * Fragment的生命周期
 * @author admin
 *
 */
public class MyFragment1 extends Fragment{
	
	private static final String TAG="MyFragment1";
	
	//被依附的Activity对象
	private Activity activity;
	
	/**
	 * 当该Fragment被添加到Activity时,被回调,该方法只会被调用一次。
	 */
	@Override
	public void onAttach(Activity activity) {
		// TODO Auto-generated method stub
		super.onAttach(activity);
		this.activity=activity;
		
		Log.v(TAG, "-----onAttach-----");
	}
	
	/**
	 * 当fragment创建时被回调,该方法只会被调用一次
	 */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		
		Log.v(TAG, "-----onCreate-----");
	}
	
	/**
	 * 每次创建,绘制该fragment的view组件时回调此方法,fragment将会显示该方法返回的view组件
	 */
	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		
		Log.v(TAG, "-----onCreateView-----");
		
		View view=inflater.inflate(R.layout.fragment_list, container, false);
	
		TextView tv=(TextView) view.findViewById(R.id.tv_sy);
		tv.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				/*Intent intent=new Intent(activity, DialogActivity.class);
				startActivity(intent);*/
				
				//changeItem();
				changeFragment();
			}

			private void changeItem() {
				//1、首先获取FragmentManager对象
				FragmentManager manager = getActivity().getSupportFragmentManager();
				//2、根据FragmentManager对象的findFragmentById方法来获取指定的fragment
				Fragment fragment = manager.findFragmentById(R.id.fragment2);
				//3、获取Fragment中的布局文件对象
				View view = fragment.getView();
				//4、获取View对象中的任何控件
				LinearLayout layout = (LinearLayout) view.findViewById(R.id.ll_item);
				//5、改变背景颜色值
				layout.setBackgroundColor(Color.BLUE);
			}
			
			private void changeFragment() {
				//1、首先获取FragmentManager对象
				FragmentManager manager = getActivity().getSupportFragmentManager();
				
				//2、获取Fragment的事务  代表:Activity对Fragment执行的多个改变的操作
				FragmentTransaction transaction = manager.beginTransaction();
				
				//添加、替换、删除Fragment,这时需要Fragment Transaction,布局文件动态
				//R.id.container
				//执行替换
				transaction.replace(R.id.container, new MyFragment3());
				
				//3、提交
				transaction.commit();
			}
		});
		
		return view;
	}
	
	/**
	 * 当fragment所在的activity被启动完成后回调该方法
	 */
	@Override
	public void onActivityCreated(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onActivityCreated(savedInstanceState);
		
		Log.v(TAG, "-----onActivityCreated-----");
	}
	
	/**
	 * 启动fragment时被回调
	 */
	@Override
	public void onStart() {
		// TODO Auto-generated method stub
		super.onStart();
		
		Log.v(TAG, "-----onStart-----");
	}
	
	/**
	 * 恢复fragment时被回调,onstart方法后一定会执行该方法
	 */
	@Override
	public void onResume() {
		// TODO Auto-generated method stub
		super.onResume();
		
		Log.v(TAG, "-----onResume-----");
	}
	
	/**
	 * 暂停时被回调
	 */
	@Override
	public void onPause() {
		// TODO Auto-generated method stub
		super.onPause();
		
		Log.v(TAG, "-----onPause-----");
	}
	
	/**
	 * 停止时被回调
	 */
	@Override
	public void onStop() {
		// TODO Auto-generated method stub
		super.onStop();
		
		Log.v(TAG, "-----onStop-----");
	}
	
	/**
	 * 销毁该fargment所包含的view组件时被调用
	 */
	@Override
	public void onDestroyView() {
		// TODO Auto-generated method stub
		super.onDestroyView();
		
		Log.v(TAG, "-----onDestroyView-----");
	}
	
	/**
	 * 销毁该fragment时被回调,该方法只会被回调一次
	 */
	@Override
	public void onDestroy() {
		// TODO Auto-generated method stub
		super.onDestroy();
		
		Log.v(TAG, "-----onDestroy-----");
	}
	
	/**
	 * 将该fragment从activity中被删除、替换完成时回调该方法,onDestroy方法后一定会回调该方法,该方法只能被调用一次
	 */
	@Override
	public void onDetach() {
		// TODO Auto-generated method stub
		super.onDetach();
		
		Log.v(TAG, "-----onDetach-----");
	}

}

 

5、结果显示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值