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

来源:互联网 发布:英语 荷兰语知乎 编辑:程序博客网 时间:2024/05/01 17:47

可以看到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
原创粉丝点击