四大组件之间传递数据可以用广播,但是有次面试官说太重了,用eventbus代替。下面的广播传递数据方法仅当学习参考。

1.管理类

/**
* 广播管理类:注册广播、注销广播、发送广播
* @author weizh_000
* @date 2016-8-29
*/
public class BroadCastManager { private static BroadCastManager broadCastManager = new BroadCastManager(); public static BroadCastManager getInstance() {
return broadCastManager;
} //注册广播接收者
public void registerReceiver(Activity activity,
BroadcastReceiver receiver, IntentFilter filter) {
activity.registerReceiver(receiver, filter);
} //注销广播接收者
public void unregisterReceiver(Activity activity,
BroadcastReceiver receiver) {
activity.unregisterReceiver(receiver);
} //发送广播
public void sendBroadCast(Activity activity, Intent intent) {
activity.sendBroadcast(intent);
} }

2.发送广播

public class MyFragment extends Fragment {

    private String orderid = "85465465";

    @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) { //发送广播
Intent intent = new Intent();
intent.putExtra("order", orderid);
intent.setAction("fragment_home_left");
BroadCastManager.getInstance().sendBroadCast(getActivity(), intent); return super.onCreateView(inflater, container, savedInstanceState);
} }

3.接收广播

public class MainActivity extends ActionBarActivity {

    private LocalReceiver mReceiver;

    @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); //接收广播
try {
IntentFilter filter = new IntentFilter();
filter.addAction("fragment_home_left");
mReceiver = new LocalReceiver();
BroadCastManager.getInstance().registerReceiver(this,
mReceiver, filter);//注册广播接收者
} catch (Exception e) {
e.printStackTrace();
}
} class LocalReceiver extends BroadcastReceiver{ @Override
public void onReceive(Context context, Intent intent) {
//收到广播后的处理
String orderid = intent.getStringExtra("order");
loadData(orderid);
} } private void loadData(String orderid){ } @Override
protected void onDestroy() {
BroadCastManager.getInstance().unregisterReceiver(this,mReceiver);//注销广播接收者
super.onDestroy();
} }

上面的例子是fragment传递数据给Activity,其实Activity也可以通过广播的方式传递数据给fragment,还有fragment与fragment之间也可以这样传数据。

Fragment和Activity之间通过广播的方式传递数据的更多相关文章

  1. 关于Fragment与Fragment、Activity通信的四种方式

    一直想总结一下Fragment与Fragment.Activity通信的问题,今天有时间一共总结了三种,权当抛砖引玉,如果大家还有更好的方式来实现Fragment和Fragment.Activity的 ...

  2. Android(Fragment和Activity之间通信)

    Fragment的使用可以让我们的应用更灵活的适配各种型号的安卓设备,但是对于Fragment和Activity之间的通信,很多朋友应该比较陌生,下面我们就通过一个实例来看一看如何实现. 一.Acti ...

  3. 适配器(adapter)与fragment之间、fragment与activity之间的通信问题

    一.适配器(adapter)与fragment之间通信 通过本地广播进行通信 步骤如下 在adapter中代码 声明本地广播管理 private LocalBroadcastManager local ...

  4. Android系列之Fragment(三)----Fragment和Activity之间的通信(含接口回调)

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

  5. 安卓Fragment和Activity之间的数据通讯

    Fragment是Android3.0之后才推出来的.可以用来做底部菜单,现在很多APP都有用到这个底部菜单.当然TabHost也可以用来做底部菜单,但是Fragment来做,动画效果这些可以做得更炫 ...

  6. Android Fragment与Activity之间的数据交换(Fragment从Activity获取数据)

    Fragment与Activity之间的数据交换,通常含有3: 一.Fragment从Activity获取数据(仅本文介绍了一个第一): 两.Activity从Fragment获取数据: 三.Frag ...

  7. Android 笔记-Fragment 与 Activity之间传递数据

    Fragment 与 Activity之间传递数据有两种方法.一种是使用setArgument,一种是使用接口回调.以下先学习第一种方法. (1)使用setArgument方法: 为了便于理解,我在这 ...

  8. Android中Fragment与Activity之间的交互(两种实现方式)

    (未给Fragment的布局设置BackGound) 之前关于Android中Fragment的概念以及创建方式,我专门写了一篇博文<Android中Fragment的两种创建方式>,就如 ...

  9. android中fragment与activity之间通信原理以及例子

    参考文章 http://blog.csdn.net/guozh/article/details/25327685#comments Activity和fragment通信方式一般有3种方法 1.在fr ...

随机推荐

  1. SublimeLinter 3中使用jshint

    这货得知已久,在sublime2时期对着教程按部就班的凑合用着...不明所以. 今天无意发现SublimeLinter终于出3了,果断装之,鼓捣1个多小时,磕磕绊绊终于成功工作了.期间看了无数英文文档 ...

  2. kali Rolling安装之后的一些常用配置总结

    添加普通用户 useradd -m -G sudo,video,audio,cdrom -s /bin/bash OKing把某个用户添加到组中: sudo usermod -a 用户名 -G 组名 ...

  3. [妙味JS基础]第八课:return、定时器基础

    知识点总结 return 1)函数名+括号 = return 返回值 2)所有的函数默认的返回值 = 未定义 3)return后面的代码不执行 arguments  =>为实参的集合,当参数个数 ...

  4. @Transactional注解详解

    默认遇到throw new RuntimeException("...");会回滚   需要捕获的throw new Exception("...");不会回滚 ...

  5. ggplot2 scale相关设置2—时间设置

    在scale设置中,常用的日期方面的设置函数包括: scale_x_date(),scale_y_date(),scale_x_datetime(),scale_y_datetime()   接下来, ...

  6. 9.hibernate的一对一映射

    一.hibernate的一对一按照外键映射 1.创建如下sql脚本: --员工账号表 create table USERS1 ( USERID ) not null, USERNAME ), USER ...

  7. 4、Math对象

    1.编辑html页面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:// ...

  8. HttpPost与HttpVerbs.Post属性的区别

    1. the HttpPost attribute is a short for the HttpVerbs.Post one but since MVC 2.0. 从MVC 2.0之后HttpPos ...

  9. python 函数/列表的应用

    enumerate 函数用于遍历序列中的元素以及它们的下标: >>> for i,j in enumerate(('a','b','c')): print i,j 0 a1 b2 c ...

  10. incallui中如何查询联系人数据

    联系人信息显示在CallCard中,提示当前正在通话的联系人号码.姓名.头像.号码类型等信息: 代码中在两个地方发起对当前联系人的查询, Init():startContactInfoSearch(c ...