为了适应多种大小屏幕,例如电视或者市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同样会被暂停和恢复。

ytwman
294 声望7 粉丝

« 上一篇
Intent 介绍
下一篇 »
ActionBar