Fragment
在Android3.0出现的,把它想象成Activity的一个模块化区域。拥有自己的生命周期,并且受其宿主Activity的影响,可以在Activity运行期间被添加或删除。
静态加载:
当作普通UI控件放在界面layout中。
动态加载:
1.开启一个事务。
2.通过事务添加Fragment。
3.提交事务,否则添加不成功。
Fragment向下兼容
1.Fragment类与FragmentManager类改为support-v4包下的类。
2.继承的Activity类改为support-v4包下的FragmentActivity类。
3.通过getSupportFragmentManager()方法来获取FragmentManager类的实例。
Fragment生命周期
方法名称 | 方法说明 |
---|---|
onAttach() | 绑定Fragment到Activity |
onCreate() | 创建Fragment |
onCreateView() | 创建Fragment的布局 |
onActivityCreated() | Activity创建完成后回调该方法 |
onStart() | 可见,不可交互状态 |
onResume() | 可见,可交互状态 |
onPause() | 部分可见,不可交互状态 |
onStop() | 不可见状态 |
onDestroyView() | 销毁Fragment的View对象 |
onDestroy() | Fragment被销毁 |
onDetach() | Fragment从Activity解绑 |
Fragment与Activity如何交互?
1.在Activity获取Fragment对象
若Activity中包含自己管理的Fragment引用,可以**直接访问**Fragment的公有方法进行相应操作。
若Activity中未保存Fragment的引用,则通过getFragmentManager().findFragmentByTag()或findFragmentById()获取相应Fragment的实例,然后进行操作。
2.在Fragment中获取Activity对象
在Fragment中可以通过getActivity()方法得到当前绑定的Activity的实例,然后进行相应的操作。
注意:在Fragment中可以通过getActivity()方法获取Context,若需要让Context在Activity被销毁后还存在,则用getActivity().getApplicationContext()来获取。
切换Fragment
//获取FragmentManager的实例
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();//开启事务
ExampleFragment fragment = new ExampleFragment();//创建一个Fragment
fragmentTransaction.replace(R.id.content, fragment);//事务添加Fragment
fragmentTransaction.commit();//提交事务