android有了eventbus,一切与关界面通信问题迎刃而解。

EventBus可以代替Android传统的Intent,Handler,Broadcast或接口函数,在Fragment,Activity,Service线程之间传递数据,执行方法,是依据观察者设计模式设计的;

在工程目录下的build.gradle 下添加依赖:

compile 'org.greenrobot:eventbus:3.0.0'
然后在你需要传播数据源的地方写上:

PayConfirmEvent payConfirmEvent = new PayConfirmEvent();
payConfirmEvent.setAddressBean(mAddressBeanList.get(position));
EventBus.getDefault().post(payConfirmEvent);
event模型要记住针对自己的数据去封装

然后接受方的代码:

在create方法中注册

EventBus.getDefault().register(this);
当然如果是一般类可以在你特定的方法中这样注册

if (!EventBus.getDefault().isRegistered(this)) {
    EventBus.getDefault().register(this);
}
这样就可以避免注册多次

覆写onEvent方法;框架会通过注解和反射拿到

payConfirmEvent
然后就可以在指定的ui线程刷新ui了,是不是超级方便啊,记得一定要记得最后取消注册额

@Subscribe(threadMode = ThreadMode.MAIN)
public void onEvent(PayConfirmEvent payConfirmEvent) {
    AddressBean addressBean = payConfirmEvent.getAddressBean();
    int pickUpStatel = payConfirmEvent.getPickUpStatel();
    if (addressBean != null) {
        tvReceiver.setText(addressBean.getUname());
        tvReceiverContact.setText(addressBean.getContact_way());
        tvReceiverAddress.setText(mHelper.code_getProvice(m_Db, String.valueOf(addressBean.getProvince())) +
                mHelper.code_getCity(m_Db, String.valueOf(addressBean.getCity())) +
                mHelper.code_getDistrict(m_Db, String.valueOf(addressBean.getArea())) + addressBean.getWhere());
        llHasAddress.setVisibility(View.VISIBLE);
        tvNoAddress.setVisibility(View.GONE);
        hasAddress = true;



@Override
protected void onDestroy() {
    EventBus.getDefault().unregister(this);
    super.onDestroy();
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值