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


各位看官们,大家好,上一回中咱们说的是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的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

talk_8

真诚赞赏,手有余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值