Fragment生命周期2
来源:互联网 发布:阿里云盒子刷安卓系统 编辑:程序博客网 时间:2024/06/05 04:26
程序执行的操作分为三步:
第一步:运行程序后,点击第一个按钮;第二步:接着点击第二个按钮;
第三步:点击返回键。
主界面布局文件activity_main.xml代码:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.zhi.fragmentlifecycle.Fragment1"> <LinearLayout android:id="@+id/main_ll_left" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="2" android:background="#E8E8E8" android:gravity="center_horizontal" android:orientation="vertical"> <Button android:id="@+id/main_btn_button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="button1" /> <Button android:id="@+id/main_btn_button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="button2" /> </LinearLayout> <LinearLayout android:id="@+id/main_ll_right" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="5" android:orientation="horizontal"></LinearLayout></LinearLayout>
主界面MainActivty代码:
package com.zhi.fragmentlifecycle;import android.app.Activity;import android.app.FragmentManager;import android.app.FragmentTransaction;import android.os.Bundle;import android.view.View;import android.widget.Button;public class MainActivity extends Activity implements View.OnClickListener { private FragmentManager manager; private FragmentTransaction transaction; private Button mButton1; private Button mButton2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mButton1 = (Button) this.findViewById(R.id.main_btn_button1); mButton2 = (Button) this.findViewById(R.id.main_btn_button2); mButton1.setOnClickListener(this); mButton2.setOnClickListener(this); } @Override public void onClick(View v) { manager = getFragmentManager(); //获取管理Fragment的管理器 transaction = manager.beginTransaction(); //开始事务 switch (v.getId()) { case R.id.main_btn_button1: Fragment1 fragment1 = new Fragment1(); transaction.replace(R.id.main_ll_right, fragment1); transaction.addToBackStack(null); //添加到回退栈 break; case R.id.main_btn_button2: Fragment2 fragment2 = new Fragment2(); transaction.replace(R.id.main_ll_right, fragment2); transaction.addToBackStack(null);//添加到回退栈 break; default: break; } transaction.commit(); //提交事务 }}
Fragment1代码:
package com.zhi.fragmentlifecycle;import android.app.Activity;import android.os.Bundle;import android.app.Fragment;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;public class Fragment1 extends Fragment { private final String TAG = "Fragment1"; /** * 与Activity关联起来 * @param activity */ @Override public void onAttach(Activity activity) { super.onAttach(activity); Log.i(TAG, "---Fragment1--->onAttach"); } /** * 创建本Fragment,一般在此声明变量 * @param savedInstanceState */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.i(TAG, "---Fragment1--->onCreate"); } /** * 创建本Fragmen的UI布局,相关控件的操作在此执行 * @param inflater * @param container * @param savedInstanceState * @return */ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment1 , null); Log.i(TAG, "---Fragment1--->onCreateView"); return view; } /** * 当关联的Activity的onCreate方法被执行后执行本方法 * @param savedInstanceState */ @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); Log.i(TAG, "---Fragment1--->onActivityCreated"); } /** * 启动状态 */ @Override public void onStart() { super.onStart(); Log.i(TAG, "---Fragment1--->onStart"); } /** * 运行状态 */ @Override public void onResume() { super.onResume(); Log.i(TAG, "---Fragment1--->onResume"); } /** * 暂停状态 */ @Override public void onPause() { super.onPause(); Log.i(TAG, "---Fragment1--->onPause"); } /** * 停止状态 */ @Override public void onStop() { super.onStop(); Log.i(TAG, "---Fragment1--->onStop"); } /** * 销毁本Fragment的UI布局 */ @Override public void onDestroyView() { super.onDestroyView(); Log.i(TAG, "---Fragment1--->onDestroyView"); } /** * 结束Fragment自身 */ @Override public void onDestroy() { super.onDestroy(); Log.i(TAG, "---Fragment1--->onDestroy"); } /** * 与Activity断开关联 */ @Override public void onDetach() { super.onDetach(); Log.i(TAG, "---Fragment1--->onDetach"); }}
Fragment2代码:
package com.zhi.fragmentlifecycle;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;public class Fragment2 extends Fragment { private final String TAG = "Fragment2"; /** * 与Activity关联起来 * @param activity */ @Override public void onAttach(Activity activity) { super.onAttach(activity); Log.i(TAG, "---Fragment2--->onAttach"); } /** * 创建本Fragment,一般在此声明变量 * @param savedInstanceState */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.i(TAG, "---Fragment2--->onCreate"); } /** * 创建本Fragmen的UI布局,相关控件的操作在此执行 * @param inflater * @param container * @param savedInstanceState * @return */ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment2 , null); Log.i(TAG, "---Fragment2--->onCreateView"); return view; } /** * 当关联的Activity的onCreate方法被执行后执行本方法 * @param savedInstanceState */ @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); Log.i(TAG, "---Fragment2--->onActivityCreated"); } /** * 启动状态 */ @Override public void onStart() { super.onStart(); Log.i(TAG, "---Fragment2--->onStart"); } /** * 运行状态 */ @Override public void onResume() { super.onResume(); Log.i(TAG, "---Fragment2--->onResume"); } /** * 暂停状态 */ @Override public void onPause() { super.onPause(); Log.i(TAG, "---Fragment2--->onPause"); } /** * 停止状态 */ @Override public void onStop() { super.onStop(); Log.i(TAG, "---Fragment2--->onStop"); } /** * 销毁本Fragment的UI布局 */ @Override public void onDestroyView() { super.onDestroyView(); Log.i(TAG, "---Fragment2--->onDestroyView"); } /** * 结束Fragment自身 */ @Override public void onDestroy() { super.onDestroy(); Log.i(TAG, "---Fragment2--->onDestroy"); } /** * 与Activity断开关联 */ @Override public void onDetach() { super.onDetach(); Log.i(TAG, "---Fragment2--->onDetach"); }}
fragment1.xml和fragment2.xml都是一个TextView文本的布局,在这里就不贴了。
程序执行后打印的Log信息:
点击第一个按钮
---Fragment1--->onAttach
---Fragment1--->onCreate
---Fragment1--->onCreateView
---Fragment1--->onActivityCreated
---Fragment1--->onStart
---Fragment1--->onResume
点击第二个按钮
---Fragment1--->onPause
---Fragment1--->onStop
---Fragment1--->onDestroyView
---Fragment2--->onAttach
---Fragment2--->onCreate
---Fragment2--->onCreateView
---Fragment2--->onActivityCreated
---Fragment2--->onStart
---Fragment2--->onResume
按返回键
---Fragment2--->onPause
---Fragment2--->onStop
---Fragment2--->onDestroyView
---Fragment2--->onDestroy
---Fragment2--->onDetach
---Fragment1--->onCreateView
---Fragment1--->onActivityCreated
---Fragment1--->onStart
---Fragment1--->onResume
红色部分比较关键,说明当Fragment1被覆盖的时候,他的布局是会被销毁的(执行onDestroyView),然后当它再次重现的时候就重新创建布局(从onCreateView这一步开始执行)。
- Fragment生命周期2
- 【Fragment精深系列2】Fragment的生命周期
- 【Fragment精深系列2】Fragment的生命周期
- Fragment(碎片)(2)-的生命周期
- fragment 生命周期
- Fragment生命周期
- Fragment 生命周期
- Fragment生命周期
- Fragment生命周期
- Fragment生命周期
- Fragment生命周期
- fragment 生命周期
- Fragment生命周期
- Fragment生命周期
- Fragment生命周期
- fragment 生命周期
- Fragment生命周期
- Fragment 生命周期
- MongoDB整库备份与还原以及单个collection备份、恢复方法
- WebForm总结_application应用程序生命周期
- android 中的 ContentObserver (一)
- ASP.NET 页生命周期
- html+css
- Fragment生命周期2
- 指针和引用的区别
- 错误的结果2......VC/bin/cl.exe返回的最终解决方案
- 你真的需要一个小例子来了解一些事情!
- UITableView默认选中第一个cell
- Python 安装matplotlib,six,dateutil,pyparsing 完整过程
- 项目:片刻 DAY1 搭建框架结构
- iOS改变状态栏的字体颜色
- 当我开始爱自己