今天这篇文章我们来聊一下和Fragment有关的传值。
1、先来说一下Fragment和Fragment之间是怎么传值得吧。
一、
在Fragment的宿主Activity创建一个变量,然后给它设置set和get方法,然后我们可以在Fragment中取出此值,也可以改变此值。
这种方法一般是用在要传的值比较简单,或者内容单一的话。
二、
在Fragment的宿主Activity里定义一个方法用来判断贴附哪个Fragment,同时把值传过去;
public void switchConent(Fragment fragment, String title,
String fragmentFlag, Bundle bundle) {
// 用来传递bundle
fragment.setArguments(bundle);
mContent = fragment;
if (!"".equals(fragmentFlag{
getSupportFragmentManager().beginTransaction().replace(R.id.content_frame,fragment,fragmentFlag).addToBackStack(fragmentFlag).commit();
} else {
getSupportFragmentManager().beginTransaction()
.replace(R.id.content_frame, fragment).commit();
}
}
通过这个方法,我们可以选择要贴附的Fragment和要传的内容bundle,上面代码是使用的replace进行替代,并根据TAG判断是否加入回退栈,这是我以前的项目写的。当然如果使用的是hide和show方法的话,这样就不可以了。因为show和hide方法没有传值这过程。
三、定义回调
我们可以定义一个接口,里面写上一个抽象的回调的方法,让所有Fragment都实