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); }
那我们就通过上节的代码在Activity中和Fragment01和Fragment02中加入log, 关于代码我就不需要贴出了,我们用Log分析。
a:在Activity中启动Fragment01
可以看到这个和上图的流程是一样的。
b:然后按back键返回
可以看到显示Fragment先暂停,Activity再暂停,接着是Fragment停止,Activity停止,接着是Fragment销毁,Activity销毁
c:当启动Fragment01后,按Home按键
可以看到显示Fragment先暂停,Activity再暂停,接着是Fragment停止,Activity停止
d:在c种情况下后,然后再次启动该应用
可以看到先是Activity先重新启动,然后是Fragment再次启动,接着是Activity运行,然后是Fragment运行
e:启动Fragment01后,再次启动Fragment02
可以看到先是Fragment01先彻底销毁,再次加载Fragment02的
总结:
1:可以看到Fragment是Activity的界面的一部分,当Activity创建后才会有Fragment
2:Fragment的生命周期是受Activity影响的,当Activity停止后,Fragment也会跟着停止
3:当Activity运行之后(OnResume方法调用之后,OnPause方法调用之前),可以单独的操作每个Fragment,比如增加,删除