1.MainActivity
FragmentManager fragmentManager; FragmentTransaction transaction; private void replaceFragment(Fragment fragment) { // 1.获取FragmentManager,在活动中可以直接通过调用getFragmentManager()方法得到 fragmentManager =getSupportFragmentManager(); // 2.开启一个事务,通过调用beginTransaction()方法开启 transaction = fragmentManager.beginTransaction(); // 3.向容器内添加或替换碎片,一般使用replace()方法实现,需要传入容器的id和待添加的碎片实例 transaction.replace(R.id.fr_container, fragment); //fr_container不能为fragment布局,可使用线性布局相对布局等。 // 4.使用addToBackStack()方法,将事务添加到返回栈中,填入的是用于描述返回栈的一个名字 transaction.addToBackStack(null); // 5.提交事物,调用commit()方法来完成 transaction.commit(); }
2.fragment 启动Activity
@Override public void onResume() { super.onResume(); Intent intent = new Intent(); intent.setClass(getActivity(), AdjustResolutionDialogActivity.class); //intent.putExtra(EXTRA_PREFERENCE_KEY, curMode); getActivity().startActivity(intent); }
![](https://ask.qcloudimg.com/http-save/yehe-7104269/9b0934f0d26e675b0ca3e033ce5e038d.png?imageView2/2/w/2560/h/7000)
那我们就通过上节的代码在Activity中和Fragment01和Fragment02中加入log, 关于代码我就不需要贴出了,我们用Log分析。
a:在Activity中启动Fragment01
![](https://ask.qcloudimg.com/http-save/yehe-7104269/df6b4c695ad687f4ca4f827a6bdbb4a1.png?imageView2/2/w/2560/h/7000)
可以看到这个和上图的流程是一样的。
b:然后按back键返回
![](https://ask.qcloudimg.com/http-save/yehe-7104269/707c4e65df00085e9e974228a01083a2.png?imageView2/2/w/2560/h/7000)
可以看到显示Fragment先暂停,Activity再暂停,接着是Fragment停止,Activity停止,接着是Fragment销毁,Activity销毁
c:当启动Fragment01后,按Home按键
![](https://ask.qcloudimg.com/http-save/yehe-7104269/2f2a228a3fec1717064cb3c197a68109.png?imageView2/2/w/2560/h/7000)
可以看到显示Fragment先暂停,Activity再暂停,接着是Fragment停止,Activity停止
d:在c种情况下后,然后再次启动该应用
![](https://ask.qcloudimg.com/http-save/yehe-7104269/8dfa0dd026edcddcff37c9427b9fdd6e.png?imageView2/2/w/2560/h/7000)
可以看到先是Activity先重新启动,然后是Fragment再次启动,接着是Activity运行,然后是Fragment运行
e:启动Fragment01后,再次启动Fragment02
![](https://ask.qcloudimg.com/http-save/yehe-7104269/bf2f1e84bad2c1f86c6f0cfe6485743c.png?imageView2/2/w/2560/h/7000)
可以看到先是Fragment01先彻底销毁,再次加载Fragment02的
总结:
1:可以看到Fragment是Activity的界面的一部分,当Activity创建后才会有Fragment
2:Fragment的生命周期是受Activity影响的,当Activity停止后,Fragment也会跟着停止
3:当Activity运行之后(OnResume方法调用之后,OnPause方法调用之前),可以单独的操作每个Fragment,比如增加,删除
Android 学习之Fragment生命周期 - 腾讯云开发者社区-腾讯云 (tencent.com)
标签:transaction,启动,fragment,Fragment01,嵌套,Fragment,Activity,activity From: https://www.cnblogs.com/wanglongjiang/p/17356872.html