android activity传值fragment,Fragment向Activity传值

###前言

之前讲过Activity向Fragment传值的具体方法,也附带讲了些Activity向Fragment传值需要注意的问题,然后讲了activity和fragment对返回键的处理。那么,这节我们就来讲讲Fragment怎么向Activity传值吧。

今天涉及的知识有:

1. Fragment 向 activity 传值的前提条件

2. Fragment的代码处理

3. Activity对于回传代码的接收处理

4. 效果图和项目结构图

先来波效果图吧:

![](/contentImages/image/20190719/ByZoi4DkjgUFEup34v3.gif)

####一. Fragment 向 activity 传值的前提条件

Fragment 向activity 传值,那么首先我们需要在fragment里面定义一个公开传值的接口类,如下:

```

public class FragmentB extends Fragment{

//其他代码省略

//......

/**fragment给activity回传值的接口**/

public interface OnFragmentListener{

/**object需要实现Serializable或Parcelable接口**/

void onFragment(String clsNameDetail, Object object);

}

}

```

其中,clsNameDetail作为是传到Activity中接收用于区分来自哪个Fragment的标志,我一般习惯用当前Fragment的类名,第二个参数 object 为传值的具体内容,最好规定一个泛型,方便传不同类型的值。

####二. Fragment的代码处理

声明完回调接口后,Fragment还需要做以下几件事:

1. 声明回调传值的接口对象

2. 写一个用于传值设置回调监听的方法

3. 设置回调监听

4. 在fragment需要向activity传值的地方调用onFragment方法将值传给activity

具体代码demo中有,这里主要讲下在fragment向activity传值的时候需要做下非空判断,例如我点击TextView要给MainActivity传值,那么我在Fragment中要这样处理:

```

//点击回传值给activity

mTvTestB.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

//给Activity传值

if(mOnFragmentListener!=null){

mOnFragmentListener.onFragment("FragmentB","我是FragmnetB传过来的值");

}

}

});

```

FragmentB中对应的XML文件fragment_b.xml代码十分简单,如下:

```

```

####三. Activity对于回传代码的接收处理

在MainActivity中接收Fragemnt传真过来的值,只需要做两步动作

1. activity实现FragmentB中的OnFragmentListener接口

2. 在onFragment(String clsNameDetail, Object object)方法中根据接收不同的fragment传过来的值做对应处理接口

具体逻辑代码如下:

```

//1. activity实现FragmentB中的OnFragmentListener接口

public class MainActivity extends AppFragActivity implements FragmentB.OnFragmentListener {

@BindView(R.id.tv_text)

TextView mTvText;

@Override

public void onFragment(String clsNameDetail, Object object) {

//2.根据接收不同的fragment传过来的值做对应处理接口

//接收FragmentB传过来的值

if("FragmentB".equals(clsNameDetail)){

mTvText.setText(object.toString());

}

}

}

```

####四. 效果图和项目结构图

运行效果图如下:

![](/contentImages/image/20190719/ByZoi4DkjgUFEup34v3.gif)

项目结构图

![](/contentImages/image/20190719/b5gB4MrV2Cxw7b2oeeY.png)

详细代码参考demo,demo中有对每个步骤的具体讲解,这里就不啰嗦了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值