各位看官们,大家好,上一回中咱们说的是Android中Fragment
的例子,这一回咱们继续说该例子。闲话休提,言归正转。让我们一起Talk Android吧!
看官们,我们在上一章回中介绍了在Activity中静态加载Fragment,这一回中我们将介绍在Activity中动态加载Fragment。明白静态加载Fragment的方法后,理解动态加载Fragment会容易很多。接下来,我们将详细的介绍如何动态加载Fragment。
首先我们要创建一个Fragment的布局文件,布局文件的创建方法以及里面的内容和Activity的布局文件完全相同,因此我们不做详细的介绍。这点和静态加载Fragment完全一样。有了布局以后,我们就需要添加与布局文件匹配的逻辑文件。这点也和静态加载Fragment完全一致。
接下来就是把Fragment和Activity关联起来,关联的方法比较简单:在Activity的布局文件中使用布局标签把刚才创建的Fragment布局文件包含进来就可以,至于使用哪种布局标签,没有专门的规定,通常使用LinearLayout
标签的时候比较多。大家看看,这种包含方法和使用普通的布局文件一样,也就是说把Fragment当作了普通的布局文件,是不是比较简单?
哈哈,不要被简单冲昏了头脑,动态加载Fragment的关键步骤来了:在Activity的代码中使用FragmentManager
的相关方法来加载Fragment,至于相关方法是什么,我们在代码中会说明。这么泛泛的说,可能有些杂乱,特别是关键的步骤中提到的方法也没有详细介绍,看官们估计要不高兴了。接下来,我把上面的内容条理化,并且加以具体的代码来辅助说明。
1.创建一个名为frag_test的布局文件,该文件就是Fragment的布局文件,至于布局文件中的内容,可以自己去定义;
2.创建一个名为FragmentTest的类,该类继承自Fragment,接着重写该类的onCreateView方法, 具体的代码为:
public class FragmentTest extends Fragment {
//重写onCreateView方法
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View view = inflater.inflate(R.layout.frag_test,container,false); //frag_test就是刚才创建的布局文件
return view;
}
//override other callback
}
这个步骤可以简称为创建Fragment的逻辑文件。
- 3.通过修改Activity的布局文件,使用布局标签把刚才创建的Fragment和Activity关联起来,具体的代码为:
<LinearLayour ...> //这是Avtivity的布局文件
<LinearLayour //使用LinearLayour标签或者其它布局标签都可以,比如RelativeLayout。
android:id=old_frag_test //这个不可少,算是Fragment的“身份证”
.... //其它长度,宽度等大小属性省略不写
/>
</LinearLayour>
- 4.在Activity的代码中使用FragmentManager的相关方法来加载Fragment.
FragmentManager fm = getSupportFragmentManager(); //获取FragmentManager
FragmentTransaction transaction = fm.beginTransaction(); //开始FragmentManager的事务
transaction.add(R.id.old_frag_test,new FragmentTest); //添加FramentTest到old_frag_test所在的位置
transaction.replace(R.id.old_frag_test,new FragmentTest); //把old_frag_test所在位置的内容替换为FramentTest
transaction.commit(); //提交事务
关于步骤4中的代码需要做一些说明:
- 这段代码通常放在
Activity的onCreate
方法中。 add或者replace
方法都可以加载Fragment,选用其中一个就可以。- 代码中的
old_frag_test
是步骤3中添加的,它在Activity的布局文件中占据了一个位置,这个位置是专门用来显示Fragment的,至于显示哪个Fragment,我们没有在布局文件中说明,而是在Activity的代码中进行了说明,怎么说明的?大家看看add或者replace方法的参数,第一个参数就是Activity布局文件中留给Fragment的位置,第二个参数就是即将要显示的Fragment,在代码中我们显示的是步骤2中创建的Fragment即FragmentTest
。 - 此外,该代码中使用事务,目的是保证加载Fragment的操作具有原子性。
看官们,以上就是如何在Activity中加载Fragment的方法,因为这种方法不是在Activity的布局文件中加载Fragment,而是在Activity的代码中加载Fragment,因此我们习惯叫它动态加载。
各位看官,关于Android中Fragment的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!