为了适应多种大小屏幕,例如电视或者市pad,能够能搞的布局延生
生命周期
- onAttach 当 Fragment 和 Activity 建立关系
- onCreate 初始创建 Fragment
- onCreateView 为 Fragment 加载布局添加内容填充
- onActivityCreated 当 Activity 的
onCreate
方法执行完之后调用 - onStart 可见生命周期,Fragment 可见
- onResume 恢复所有暂停的 Fragment
- onPause
- onStop
- onDestroyView 当销毁 Fragment 的时候调用
- onDestroy
- onDetach 当 Fragment 和 Activity 解除关联的时候调用
使用 onCreateView 方法来初始化 Fragment:填充 UI、获取它所包含的 View 的引用(绑定到该 View 的数据),然后创建所需的任何的 Service 和 Timer。
一旦填充好了 View 层次,该 View 应该从这个处理程序返回:
return inflater.inflate(R.layout.fragment_dotolist, container, false);
如果该 Fragment 需要和它的父 Activity 的 UI 交互,需要一直等到 onActivityCreated 事件被触发。该事件被触发意味着Fragment所在的 Activity 已经完成了初始化并且它的UI也已经完全的构建好了。
Fragment Manager 介绍
每个 Activity 都包含一个 Fragment Manager 来管理它所包含的 Fragment。可以通过使用 getFragmentManager 方法来获得FragmentManager。如果使用 android-support-v4 包 则可以使用 getSupportFragmentManager 方法。
FragmentManager 提供了很多方法用来访问当前添加到 Activity 上的 Fragment、通过执行 Fragment Manager 来添加、删除、替换 Fragment
getSupportFragmentManager().beginTransaction().add(R.id.container, new MyFragment()).commit();
// 首先创建一个Fragment管理器
FragmentManager fm = this.getSupportFragmentManager();
// 然后开启事物
FragmentTransaction ft = fm.beginTransaction();
// 添加、删除、替换Fragment
ft.add(R.id.container(容器ID), new InstanceFragment());
ft.replace()
// 提交事物
ft.commit();
Fragment 和 Back 栈
当 Activity 中动态的创建 Fragment ,使 UI 发生重大的改变,在某些情况下用户可能会理所当然的期望 Back 按钮会返回到之前的布局,同样包括回滚前一个已执行的 Fragment Manager。
想要将 Fragment Transaction 添加到 back 栈中,可以在调用 commit 方法之前,在 Fragment Transaction 中调用 addToBackStack
方法。
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.add(R.id.action_bar, new DotoListFragment());
Fragment fragment = fm.findFragmentById(R.id.action_bar);
ft.remove(fragment);
String tag = null;
ft.addToBackStack(tag);
ft.commit();
当按下 Back 按钮时,之前的 Fragment Transaction 将会回滚并且 UI 将返回到之前的布局。
当上文所述的 Fragment Transaction 已被提交,DetailsFragment 就会被停止并被移动到 back 栈中,而不是简单的被销毁。如果 Transaction 回滚,List Fragment 被销毁, Details Fragment 就会被重新启动。
// Fragment Transaction 动画
transaction.setTransaction(FragmentTransaction.TRANSIT_FRAGMENT_OPE);
transaction.setCustomAnimations();
Android Fragment 类
- DialogFragment
- ListFragment 可以通过绑定数据呈现一个ListView 作为它主要的 UI 展现方式。它提供了设置 Adapter 的方法。
- WebViewFragment 它在Fragment 内封装了一个WebView。当Fragment被暂停和恢复时,子WebView同样会被暂停和恢复。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。