笔记23 Fragment使用详解及心得--Fragment的生命周期

可以看到Fragment比Activity多了几个额外的生命周期回调方法:
onAttach(Activity)
当Fragment与Activity发生关联时调用。
onCreateView(LayoutInflater, ViewGroup,Bundle)
创建该Fragment的视图
onActivityCreated(Bundle)
当Activity的onCreate方法返回时调用
onDestoryView()
与onCreateView想对应,当该Fragment的视图被移除时调用
onDetach()
与onAttach相对应,当Fragment与Activity关联被取消时调用
注意:除了onCreateView,其他的所有方法如果你重写了,必须调用父类对于该方法的实现,



package com.example.fragmentgather;

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) {
        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) {
        super.onAttach(activity);
        Log.i("Main", "Fragment1---onAttach()");

    }

    /**
     * 创建Fragment时会回调,只会调用一次
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.i("Main", "Fragment1---onCreate()");

    }

    /**
     * 当Fragment所在的Activty启动完成后调用
     */
    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        Log.i("Main", "Fragment1---onActivityCreated()");

    }

    /**
     * 启动Fragment
     */
    @Override
    public void onStart() {
        super.onStart();
        Log.i("Main", "Fragment1---onStart()");

    }

    /**
     * 恢复Fragment时会被回调,调用onStart()方法后面一定会调用onResume()方法
     */
    @Override
    public void onResume() {
        super.onResume();
        Log.i("Main", "Fragment1---onResume()");

    }

    /**
     * 暂停Fragment
     */
    @Override
    public void onPause() {
        super.onPause();
        Log.i("Main", "Fragment1---onPause()");

    }

    /**
     * 停止Fragment
     */
    @Override
    public void onStop() {
        super.onStop();
        Log.i("Main", "Fragment1---onStop()");

    }

    /**
     * 销毁Fragment所包含的View组件时
     */
    @Override
    public void onDestroyView() {
        super.onDestroyView();
        Log.i("Main", "Fragment1---onDestroyView()");

    }

    /**
     * 销毁Fragment时会被回调
     */
    @Override
    public void onDestroy() {
        super.onDestroy();
        Log.i("Main", "Fragment1---onDestroy()");

    }

    /**
     * Fragment从Activity中删除时会回调该方法,并且这个方法只会调用一次
     */
    @Override
    public void onDetach() {
        super.onDetach();
        Log.i("Main", "Fragment1---onDetach()");
    }
}

09-20 23:42:35.021 3222-3222/com.example.fragmentgather E/Main: Fragment1---onAttach()
09-20 23:42:35.021 3222-3222/com.example.fragmentgather E/Main: Fragment1---onCreate()
09-20 23:42:35.021 3222-3222/com.example.fragmentgather E/Main: Fragment1---onCreateView()
09-20 23:42:35.021 3222-3222/com.example.fragmentgather E/Main: Fragment1---onActivityCreated()
09-20 23:42:35.021 3222-3222/com.example.fragmentgather E/Main: Fragment1---onStart()
09-20 23:42:35.021 3222-3222/com.example.fragmentgather E/Main: Fragment1---onResume()f

锁屏

09-20 23:43:19.261 3222-3222/com.example.fragmentgather E/Main: Fragment1---onPause()

09-20 23:43:19.265 3222-3222/com.example.fragmentgather E/Main: Fragment1---onStop()


解锁
09-20 23:43:25.821 3222-3222/com.example.fragmentgather E/Main: Fragment1---onStart()
09-20 23:43:25.821 3222-3222/com.example.fragmentgather E/Main: Fragment1---onResume()


切换到第一个

09-20 23:44:24.841 3222-3222/com.example.fragmentgather E/Main: Fragment1---onPause()
09-20 23:44:24.841 3222-3222/com.example.fragmentgather E/Main: Fragment1---onStop()
09-20 23:44:24.841 3222-3222/com.example.fragmentgather E/Main: Fragment1---onDestroyView()
09-20 23:44:24.841 3222-3222/com.example.fragmentgather E/Main: Fragment1---onDestroy()
09-20 23:44:24.841 3222-3222/com.example.fragmentgather E/Main: Fragment1---onDetach()

切换到第二个
09-20 23:44:42.441 3222-3222/com.example.fragmentgather E/Main: Fragment1---onAttach()
09-20 23:44:42.441 3222-3222/com.example.fragmentgather E/Main: Fragment1---onCreate()
09-20 23:44:42.445 3222-3222/com.example.fragmentgather E/Main: Fragment1---onCreateView()
09-20 23:44:42.445 3222-3222/com.example.fragmentgather E/Main: Fragment1---onActivityCreated()
09-20 23:44:42.445 3222-3222/com.example.fragmentgather E/Main: Fragment1---onStart()
09-20 23:44:42.445 3222-3222/com.example.fragmentgather E/Main: Fragment1---onResume()




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值