一起Talk Android吧(第四十九回:Android中的Fragment交互)

来源:互联网 发布:数据库join例子 编辑:程序博客网 时间:2024/05/22 00:30

各位看官们,大家好,上一回中咱们说的是Android中Fragment的例子,这一回咱们继续说该例子。闲话休提,言归正转。让我们一起Talk Android吧!


看官们,在前面的章回中我们对Fragment进行了详细的介绍,不过这些介绍都是以Activity与Fragment之间的交互为主。在接下来的章回中我们将介绍Fragment之间的交互。在今天的章回中我们先介绍一下嵌入在同一个Activity中的两个Fragment如何进行交互。

因为两个Fragment是嵌套在同一个Activity中的,它们之间可以看作是兄弟关系,而Activity可以看作是它们的家长,两个兄弟之间有矛盾了,家长肯定会出来调解的,先来威严的一声吼:你们两个熊孩子要做什么!接下来是就各种调解了,进行调解后的的两“兄弟”又和好如初了。哈哈,现实生活中如此,在Android中也是这样,这两个兄弟Fragment之间的交互也是基于家长“Activity”的,它们之间需要交互的时候,先是找到Activity,然后通过Activity找到另外一个Fragment,这样就可以进行交互了。经过这么比喻式的解释,大家是不是觉得Fragment之间的交互比较简单呢?是的,不过还是有觉得不够具体。这们看官说的对,接下来我们就通过代码来演示,这样会更加具体一些。

  • 1.在同一个Activity中有两个Fragment,我们称它们为FragmentA和B。
<LinearLayout .../> //这是Activity的布局文件,省略了属性    <fragment     //使用fragment标签以及它的name属性        android:id=@+id/fragmentA  //这个不可少,它是Fragment的“身份证”        android:name="packagename.FragmentA" //使用name属性来关联。赋值时使用包名.类名,这是静态加载Fragment。        ....  //其它长度,宽度等大小属性省略不写     >      <fragment     //使用和FragmentA同样的方式加载FragmentB        android:id=@+id/fragmentB          android:name="packagename.FragmentB"         ....       >  </LinearLayout>
  • 2.在FragmentA的类中获取Activity,然后找到FragmentB。
    这一步最关键:先是通过Fragment的getActivity方法找到Activity,然后通过Activity的getSupportFragmentManager方
    法获取到FragmentManager,接着通过它的方法findFragmentById找到FragmentB。这是一个连续的“动作”。
public class FragmentA extends Fragment {    private FragmentManager  fm;    private mActivity = getActivity();   //首先获取Activity    private mFragmentB;    if(mActivity != null) {        fm =  mActivity.getSupportFragmentManager(); //接着获取FragmentManager        mFragmentB = (FragmentB)fm.findFragmentById(R.id.fragmentB); //最后通过FragmentManager找到FragmentB        if(mFragmentB != null)            mFragmentB.func(); //使用FragmentB中的方法,可以看作是FragmentA与FragmentB之间的交互    }}

看官们,上面的代码是介绍如何在FragmentA中与FragmentB进行交互的,在FragmentB中与FragmentA进行交互的方法完全一样,我就不做介绍了,希望大家自己动手来完成。


各位看官,关于Android中Fragment的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!


阅读全文
0 0
原创粉丝点击