<Fragment>的生命周期
来源:互联网 发布:中国联通无线上网 mac 编辑:程序博客网 时间:2024/06/07 05:33
坚持住你的坚持,成功就在拐弯处。
/** * 生命周期的代码 */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()方法.该方法只会调用一次.
0 0
- 关于Fragment的生命周期
- Fragment的生命周期
- 3.2 Fragment的生命周期
- Fragment的生命周期
- Fragment的生命周期初识
- Android-Fragment的生命周期
- Fragment的生命周期
- Fragment 的生命周期
- Fragment 的生命周期
- Fragment的生命周期
- Fragment的生命周期
- 【Android】Fragment的生命周期
- Fragment 的生命周期
- Fragment的生命周期
- Fragment的生命周期
- Android Fragment的生命周期
- Fragment的生命周期
- 理解Fragment的生命周期
- springmvc小结
- GetComputerName函数
- GetUserName函数
- Coursera机器学习-第十周-Large Scale Machine Learning
- LeetCode-62-Unique Paths
- <Fragment>的生命周期
- 安卓fragment跳转activity,fragment跳转fragment,activity跳转fragment
- NodeJs常用链接整理
- 项目编码批量转换工具
- Largest Number
- HackerRank Fibonacci Modified
- LocalBroadcastManager的使用总结
- JAVA 生成二维码
- HackerRank Breadth First Search: Shortest Reach