Receiver向Activity传递数据

今天要写以后测试的例子,需要在受到广播以后将一些数据传递个Activity,除了第三方的EventBus一下子还没想到好的方法,我们知道Activity想其他组件传递数据,简单的就使用Intent携带过去就好了,但是从Receiver向Activity传递数据呢,其实可以使用回调接口。

就像Activity中的button也是使用的回调接口,Button类就将用户点击的响应传递个了Activity。代码如下:

class TestBrocastReceiver extends BroadcastReceiver {

	private static final String TAG = "TestiBrocastReceiver";
	private Info info;
	@Override
	public void onReceive(Context context, Intent intent) {
			String action = intent.getAction();
			Log.e(TAG,"广播接受者的类型:" + action);
			if(info != null){
				info.getString(action );
			}

	}
	//回调接口
	interface Info{
		void getString(String str);
	}
	//传递回调对象
	public void setInstance(Info info){
		this.info= info;
	}
}

在Activity中就像实现button点击的接口一样

public class TestiActivity extends Activity implements TestBrocastReceiver.Info{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_wifi);
        
         TestBrocastReceiver testBrocaster = new TestBrocastReceiver();
          IntentFilter filter = new IntentFilter();
          filter.addAction("com.test");//闹钟触发广播
          this.registerReceiver(testBrocaster, filter);
          
          //因为要这是回调对象,所以需要使用动态注册广播
          testBrocaster .setInstance(this);
    }

    @Override
    public void getString(String str) {
    	//在这个回调方法中就获取到了广播中传递的数据了。
        Toast.makeText(WifiActivity.this, str, Toast.LENGTH_LONG).show();
    }
}

仔细看看是不是和实现Button点击的OnClickListener接口很像,再往下推一步,所有想要向Activity中传递数据的行为,都可以使用这种回调接口的方式。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值