使用环境:
比如在fragment跳转界面扫描二维码的时候
在fragment跳转手机相册选择照片并返回的时候
不能使用fragment 直接去接受这个放回结果,
(因为可以在fragment中startActivityForResult() 但是不能在fragment中onActivityResult() 这时候就需要一个广播)
1 发送广播:
Intent intentDelete;
public void sentBroadcastDelete(String s) {
if (intentDelete == null) {
intentDelete = new Intent();
intentDelete.setAction("index");//广播频道
}
intentDelete.putExtra("userId", s);//广播中携带的key 和对应的value
sendBroadcast(intentDelete);
}
这样,这个广播就发送出去啦。
2 在接收信息界面声明接收的广播:
/**
* 声明接收扫描结果的广播,
*/
class ReceiveBroadCast extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if ("index".equals(intent.getAction())) {
ToastUtil.showToast("index接收到用户ID:" + intent.getStringExtra("userId"));
}
}
}
3 在接收广播的界面进行初始化广播,即可在第2步中接收到广播携带的消息
//注册接收的广播
receiveBroadCast = new ReceiveBroadCast();
IntentFilter filter = new IntentFilter();
filter.addAction("index");
getActivity().registerReceiver(receiveBroadCast, filter);
4 界面消失取消广播
@Override
public void onDestroy() {
super.onDestroy();
if (receiveBroadCast != null) {
getActivity().unregisterReceiver(receiveBroadCast);
}
}