<Fragment>的生命周期
2016-06-23 07:55
363 查看
坚持住你的坚持,成功就在拐弯处。
点击 加载目标Fragment 按钮时会执行 –onAttach–,–onCreate–, –onCreateView–,–onActivityCreated–,–onStart–,-onResume–方法.
接着点击 启动对话框Activity的按钮 当前的Activity会进入暂停状态,该 Fragment也会进入暂停状态,会执行 –onPause–方法. 点击返回键,关闭对话框Activity. Fragment会执行onResume()方法.
继续点击 替换目标Fragment,并加入Back栈中 的按钮
–onPause– –onStop– –onDestroyView–方法.
点击 替换目标Fragment 按钮之后 执行 –onPause–, –onStop–,–onDestroyView–, –onDestroy–,–onDetach– 该Fragment 将会被完全结束,Fragment将进入”销毁”状态.
Fragment 的生命周期中,如下方法被系统回调.
onAttach(Activity) 当Fragment被添加到 Activity时,被回调.该方法只会被调用一次.
onCreate(Bundle) 创建Fragment 时被回调,该方法只会被调用一次.
onCreateView(LayoutInflater, ViewGroup, Bundle) ;每次创建,绘制Fragment的View组件时回调该方法,Fragment将会显示该方法返回的view组件.
onActivityCreated(Bundle) 当Fragment所在的Activity 被启动完成后回调该方法.
onStart() 启动Fragment 时被回调.
onResume() 恢复Fragment时被回调, onStart()方法后一定会回调 onResume()方法.
onPause() 暂停时Fragment时被回调.
onStop(); 停止Fragment 时被回调.
onDestroyView() 销毁 该Fragment 所包含的View 组件时调用.
onDestroy() 销毁 Fragment时被回调. 该方法只会调用一次.
onDetach() 将该 fragment 从Activity中 被删除,被替换完成时,回调该方法. onDestroy方法后一定会回调 onDetach()方法.该方法只会调用一次.
/** * 生命周期的代码 */ public class LifecycleFragment extends Fragment { public static final String TAG = "LifecycleFragment"; @Override public void onAttach(Context context) { super.onAttach(context); Log.d(TAG, "--onAttach--"); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.d(TAG, "--onCreate--"); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { Log.d(TAG, "--onCreateView--"); TextView tv = new TextView(getActivity()); tv.setText("测试 fragment"); tv.setGravity(Gravity.CENTER); tv.setTextSize(36); return tv; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); Log.d(TAG, "--onActivityCreated--"); } @Override public void onStart() { super.onStart(); Log.d(TAG, "--onStart--"); } @Override public void onResume() { super.onResume(); Log.d(TAG, "--onResume--"); } @Override public void onPause() { super.onPause(); Log.d(TAG, "--onPause--"); } @Override public void onStop() { super.onStop(); Log.d(TAG, "--onStop--"); } @Override public void onDestroyView() { super.onDestroyView(); Log.d(TAG, "--onDestroyView--"); } @Override public void onDestroy() { super.onDestroy(); Log.d(TAG, "--onDestroy--"); } @Override public void onDetach() { super.onDetach(); Log.d(TAG, "--onDetach--"); } public LifecycleFragment() { } }
package com.test.lifecyclefragment.activity; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import com.test.lifecyclefragment.R; import com.test.lifecyclefragment.fragment.LifecycleFragment; import com.test.lifecyclefragment.fragment.SeconFragment; /** * Fragment的生命周期 * */ public class MainActivity extends AppCompatActivity { Button startActivity,addFragment,backFragment,replaceFragment,finish; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); //初始化控件 initListener(); //初始化监听事件 } private void initListener() { startActivity.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //启动对话框风格Activity startActivity(new Intent(MainActivity.this,SecondActivity.class)); } }); //添加 Fragment addFragment.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { LifecycleFragment fragment = new LifecycleFragment(); getFragmentManager().beginTransaction().replace(R.id.container,fragment).commit(); } }); //将替换前的Fragment 添加到 Back栈中 backFragment.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { SeconFragment secFragment = new SeconFragment(); getFragmentManager().beginTransaction() .replace(R.id.container, secFragment) .addToBackStack("aa")// 将替换前的Fragment添加到Back栈 .commit(); } }); //替换 Fragment replaceFragment.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { SeconFragment secFragment = new SeconFragment(); getFragmentManager().beginTransaction().replace(R.id.container, secFragment).commit(); } }); // 为finish按钮绑定事件监听器 finish.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View source) { // 结束该Activity MainActivity.this.finish(); } }); } private void initView() { startActivity = (Button) findViewById(R.id.start_dialog_activity); addFragment = (Button) findViewById(R.id.addFragment); backFragment = (Button) findViewById(R.id.backFragment); replaceFragment = (Button) findViewById(R.id.replaceFragment); finish = (Button) findViewById(R.id.finish); } }
/** * 对话框风格 Activity */ public class SecondActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView tv = new TextView(getApplication()); tv.setText("对话框风格Activity"); setContentView(tv); } }
public class SeconFragment extends Fragment{ @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { TextView tv = new TextView(getActivity()); tv.setText("第二个 Fragment"); tv.setGravity(Gravity.CENTER_HORIZONTAL); tv.setTextSize(36); tv.setTextColor(Color.BLUE); return tv; } }
点击 加载目标Fragment 按钮时会执行 –onAttach–,–onCreate–, –onCreateView–,–onActivityCreated–,–onStart–,-onResume–方法.
接着点击 启动对话框Activity的按钮 当前的Activity会进入暂停状态,该 Fragment也会进入暂停状态,会执行 –onPause–方法. 点击返回键,关闭对话框Activity. Fragment会执行onResume()方法.
继续点击 替换目标Fragment,并加入Back栈中 的按钮
–onPause– –onStop– –onDestroyView–方法.
点击 替换目标Fragment 按钮之后 执行 –onPause–, –onStop–,–onDestroyView–, –onDestroy–,–onDetach– 该Fragment 将会被完全结束,Fragment将进入”销毁”状态.
Fragment 的生命周期中,如下方法被系统回调.
onAttach(Activity) 当Fragment被添加到 Activity时,被回调.该方法只会被调用一次.
onCreate(Bundle) 创建Fragment 时被回调,该方法只会被调用一次.
onCreateView(LayoutInflater, ViewGroup, Bundle) ;每次创建,绘制Fragment的View组件时回调该方法,Fragment将会显示该方法返回的view组件.
onActivityCreated(Bundle) 当Fragment所在的Activity 被启动完成后回调该方法.
onStart() 启动Fragment 时被回调.
onResume() 恢复Fragment时被回调, onStart()方法后一定会回调 onResume()方法.
onPause() 暂停时Fragment时被回调.
onStop(); 停止Fragment 时被回调.
onDestroyView() 销毁 该Fragment 所包含的View 组件时调用.
onDestroy() 销毁 Fragment时被回调. 该方法只会调用一次.
onDetach() 将该 fragment 从Activity中 被删除,被替换完成时,回调该方法. onDestroy方法后一定会回调 onDetach()方法.该方法只会调用一次.
相关文章推荐
- Android Fragment 基本了解(图文介绍)
- Android程序开发之Fragment实现底部导航栏实例代码
- Android应用开发中Fragment与Activity间通信示例讲解
- Android的Fragment的生命周期各状态和回调函数使用
- 浅谈Android App开发中Fragment的创建与生命周期
- 实例探究Android开发中Fragment状态的保存与恢复方法
- Android Fragment的使用方法(翻译)
- 实例探究Android应用编写时Fragment的生命周期问题
- Android App开发中创建Fragment组件的教程
- Android中的Fragment类使用进阶
- 使用Fragment来处理Andoird app的UI布局的实例分享
- Android App中使用ListFragment的实例教程
- Android中Fragment子类及其PreferenceFragment的创建过程演示
- Android应用开发中Fragment间通信的实现教程
- Android 开发之BottomBar+ViewPager+Fragment实现炫酷的底部导航效果
- Android 中 Fragment的使用大全
- Android基于ViewPager Fragment实现选项卡
- Android中Fragment与Activity的生命周期对比
- 实例讲解Android应用开发中Fragment生命周期的控制
- Android学习之Fragment