可以把 Fragment 想象成 Activity 的模块,它拥有自己的生命周期、接收输入事件,可以在 Acvitity 运行过程中添加或者移除。
创建 Fragment 时,必须重写 onCreateView() 回调方法来定义布局。
Activity中如果用到Fragment 应该继承自 FragmentActivity ,也可以继承AppCompatActivity,AppCompatActivity 是 FragmentActivity 的子类。
动态添加Fragment
要执行添加或移除 Fragment 等事务,你必须使用 FragmentManager 创建一个 FragmentTransaction,后者可提供用于执行添加、移除、替换以及其他 Fragment 事务的 API。
如果 Activity 中的 Fragment 可以移除和替换,你应在调用 Activity 的 onCreate() 方法期间为 Activity 添加初始 Fragment(s)。
以上这两点了解一下就可以,现在关于FragmentTransaction的操作都在AS源码里面,我们不需要去管。在项目中的做法是需要几个Fragment就动态添加几个,然后在Activity的布局中使用viewPager,两者结合。(首页中用FragmentTabHost和TabWidget结合做)。
用一个 Fragment 替换另一个 Fragment
请注意,当你执行替换或移除 Fragment 等 Fragment 事务时,最好能让用户向后导航和“撤消”所做更改。要通过 Fragment 事务允许用户向后导航,你必须调用 addToBackStack(),然后再执行 FragmentTransaction。
当你移除或替换 Fragment 并向返回堆栈添加事务时,已移除的 Fragment 会停止(而不是销毁)。如果用户向后导航,还原该 Fragment,它会重新启动。如果你没有向返回堆栈添加事务,那么该 Fragment 在移除或替换时就会被销毁。
与其他 Fragment 交互
通常 Fragment 之间可能会需要交互,比如基于用户事件的内容变更。所有 Fragment 之间的交互应通过与之关联的 Activity 来完成。两个 Fragment 之间不应直接交互。
为了让 Fragment 与包含它的 Activity 进行交互,可以在 Fragment 类中定义一个接口,并在 Activity 中实现。(必须实现接口)
Activity 中实现接口后调用的方法,用来和Fragment进行交互。
@Override
public void setSelectedFragment(BaseFragment selectedFragment) {
}