Android基础总结2 ---- Fragment与Activity
在Android的基础中,除了各种控件的使用之外,Fragment和Activity也是很重要的知识点。本博文参考了慕课网的Android的教学资源,学习了一段时间,很有一种想和大家分享的冲动。
- 1.Fragment作为Activity界面的一部分组成出现
- 2.可以在一个Activity中同时出现多个Fragment,并且,一个Fragment亦可在多个Activity中使用。
- 3.在Activity运行过程中,可以添加、移除或者替换Fragment(add()、remove()、replace())
- 4.Fragment可以响应自己的输入事件,并且有自己的生命周期,当然,它们的生命周期直接被其所属的宿主activity的生命周期影响。
下面是Fragment的生命周期的验证程序:注意看注释就明白了
package com.example.fragmentdome;
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) {
// TODO Auto-generated method stub
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) {
// TODO Auto-generated method stub
super.onAttach(activity);
Log.i("Main", "Fragment1---onAttach()");
}
/**
* 创建Fragment时会回调,只会调用一次
*/
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
Log.i("Main", "Fragment1---onCreate()");
}
/**
* 当Fragment所在的Activty启动完成后调用
*/
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
Log.i("Main", "Fragment1---onActivityCreated()");
}
/**
* 启动Fragment
*
*/
@Override
public void onStart() {
// TODO Auto-generated method stub
super.onStart();
Log.i("Main", "Fragment1---onStart()");
}
/**
* 恢复Fragment时会被回调,调用onStart()方法后面一定会调用onResume()方法
*/
@Override
public void onResume() {
// TODO Auto-generated method stub
super.onResume();
Log.i("Main", "Fragment1---onResume()");
}
/**
* 暂停Fragment
*/
@Override
public void onPause() {
// TODO Auto-gener