两种常用发送广播的方式,以及广播传值

发送广播一般用于相隔多个页面发送通知或者传值的时候用(如果不了解建议先去看一下对广播的介绍)。

1.第一种发送广播的方式

写在需要发送广播的地方(如果不传值两行代码就可以搞定,很简单):

       String str = "需要传的内容";
        //注册并发送广播(写在发送广播的地方)(意图:往mainactivity中发送广播并传值,为TextView设置内容)
       Intent intent = new Intent("click_position");
       //广播传值(不需要传值可以不用写)
       intent.putExtra("string", str);
       LocalBroadcastManager.getInstance(MainActivity.this).sendBroadcast(intent);

写在接收广播的地方:

        //注册广播机制,接收传来的广播(意图:接收来自mainAdapter传来的广播以及值,用于为TextView设置内容)
        LocalBroadcastManager broadcastManager = LocalBroadcastManager.getInstance(MainActivity.this);
        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction("click_position");
        BroadcastReceiver mItemViewListClickReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
//接收由发送广播的界面传来的值(没有传值不用写)
                String str = intent.getStringExtra("string");
//接收到广播之后需要处理的事情
                titleView.setText(str);
            }
        };
        broadcastManager.registerReceiver(mItemViewListClickReceiver,intentFilter);

2.第二种发送广播的方式

    写在需要发送广播的地方(发送两条广播写在不同的类中)

                //发送广播
                Intent intent = new Intent();
                intent.setAction("mainFragmentA");
                sendBroadcast(intent);

                //发送广播
                Intent intent = new Intent();
                intent.setAction("mainFragmentB");
                sendBroadcast(intent);

    接收广播:

下面的写在需要接收广播的类中:

                //注册广播机制
                MyReceiver receiver = new MyReceiver();
                //创建过滤器,并指定action,使之用于接收同action的广播
                IntentFilter filter1 = new IntentFilter("mainFragmentA");
                IntentFilter filter2 = new IntentFilter("mainFragmentB");
                //注册广播接收器 
                registerReceiver(receiver, filter1);
                registerReceiver(receiver, filter2);

下面是新建一个广播的类:

                private class MyReceiver extends BroadcastReceiver {
                private static final String action1 = "mainFragmentA";//第一个动作
                private static final String action2 = "mainFragmentB";//第2个动作
                @Override
                public void onReceive(Context context, Intent intent) {
                    if (intent.getAction().equals(action1)){
                        sendHttp();//第一个动作需要处理的事情
                    }else if (intent.getAction().equals(action2)){
                        sendHttp();//第二个动作需要处理的事情
                    }
                   }
                }

 

更多好内容戳下面:

https://blog.csdn.net/wuqingsen1

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值