发送广播一般用于相隔多个页面发送通知或者传值的时候用(如果不了解建议先去看一下对广播的介绍)。
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();//第二个动作需要处理的事情
}
}
}
更多好内容戳下面: