这是android开发必须遇到的问题,那么今天我们来探讨一下。
Activity传值给Fragment ,通过Bundle。
方法一: 一般Framgent都不是单独存在的,所以假设如果我们从ActivityA跳转到FragmentA ,而FragmentA的宿主是MainActivity。
注:Fragment可以根据宿主Activity,Intent直接跳转到其他Activity,而activity则不能直接跳转到Fragment,只有先跳转到宿主Activity.
第一步:ActivityA Intent 直接跳转到 MainActivity,,Intent是携带Bundle对象跳转的。(此处代码省略................)
第二步:MainActivity获取ActivityA传递的Intent对象,在传递给FragmentA
//获取ActivityA传递的Intent的Bundle
Intent mIntent =getIntent();
Bundle mBudle =mIntent.getExtras();
获取到了那么怎么给Fragmeng呢?
方式一:
MainActivity 发送方法:,
//将Bundle对象通过setArguments 设置给要传递的Fragment,
............此处你们自己写自己的FragmentManager和FragmentTransaction,根据个人情况
MyFragment myFragment =new MyFragment();
myFragment.setArguments(mBudle ); //看这里
FragmentTransaction.add(R.id.....,myFragment ,xxxx);
FragmentTransaction.commit();
FramentA接收方法:
方式二:
MainActivity定义公共返回值方法
public static Bundle getBundle(){
return mIntent;
}
Fragment 接收方法:
Bundle mBundle =MainActivity.getBundle();
if(mBundle != null){
.............获取值之后的方法
}
Fragment传值给 Activity 通过 Bundle。和上面类似
思路:在Framgment中定义接口回调给传递给Activity
我一般将这部分代码写在BaseFragmeng中
直接上图了:
fragmeng操作
我这里将Fragment传给activity的类型是object,你可以换成Bundle
注意还有一步如下图:
Activity中操作
implements BaseFragment.FragmentCallBack
重写传参方法,接受fragmeng数据
注意 :接受的数据是 param[0] 获取的
完毕!