[Android]Fragment与Activity之间的通信方案

本文介绍了Android中Fragment与Activity的5种通信方案:setArguments、Handler、Broadcast、EventBus和接口回调。详细讲解了每种方式的实现原理和使用场景,并提供了相关代码示例。在实际开发中,开发者可以根据具体需求选择合适的方法。

Fragment依赖于Activity,那么它们之间的通信就必须要涉及。通过自己的寻找和实践,知道了Fragment和Activity之间的通信方案大概有5种,各有优缺点,用哪个方案看需求吧。

  1. setArguments(Bundle args)
  2. Handler
  3. Broadcast广播
  4. EventBus
  5. 接口回调

上代码,开始分析。自己写了个小Demo:Fragment通信Demo ,里边有上边前4种通信方式。  

demo中1、2、3为activity->fragment,2、3若要fragment->activiy则相关代码调换位置即可。4包含双向通信。

一、 setArguments(Bundle args)

 此方式还挺简单的,貌似是谷歌官方推荐的一种数据传递方式,如果遇到内存重启,系统会自动保存数据,和Activity中的Intent一个原理。

用Android Studio新建一个Fragment时,会自带一个函数:

private static final String ARG_PARAM1 = "param1";
private static final String ARG_PARAM2 = "param2";

private String mParam1;
private String mParam2;

/**
* Use this factory method to create a new instance of
* this fragment using the provided parameters.
*
* @param param1 Parameter 1.
* @param param2 Parameter 2.
* @return A new instance of fragment Fragment1.
*/
// TODO: Rename and change types and number of parameters
public static Fragment1 newInstance(String param1, String param2) {
	Fragment1 fragment = new Fragment1();
    Bundle args = new Bundle();
    args.putString(ARG_PARAM1, param1);
    args.putString(ARG_PARAM2, param2);
    //保存数据
    fragment.setArguments(args);
    return fragment;
}

在Activity中新建Fragment实例的时候,直接传入想要传送的数据。


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值