EventBus理解

      EventBus主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息,优点是开销小,代码更优雅。以及将发送者和接收者解耦。

      首先创建一个实体类:这里不多说,直接上代码:

    

package com.cysd.wz_client.model;

/**
 * Created by Administrator on 2016/3/2 0002.
 */
public class Event {
    private int opt;
    private String content;

    public Event() {

    }

    public Event(int opt, String content) {
        this.opt = opt;
        this.content = content;
    }

    public int getOpt() {
        return opt;
    }

    public void setOpt(int opt) {
        this.opt = opt;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }
}

        然后再要接收的消息的页面注册(MainActivity),也就是需要把数据返回到的页面中。(代码如下)

     

EventBus.getDefault().register(this);

         然后在要接收消息的页面反注册(MainActivity),反注册只能在onDestory()方法中反注册。代码如下:

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

    在需要发送的消息的页面(Main2Activity),把需要传值的通过如下代码:

lv_comment.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        EventBus.getDefault().post(new Event(600, countyAdapter.getCurrentItem(position).getArea()));//区县列表));
        Log.e("TAG", countyAdapter.getCurrentItem(position).getArea() + "");
        finish();
    }
});
     lv_comment 其实就是一个Button按钮。重点代码在这里: 

EventBus.getDefault().post(new Event(600, countyAdapter.getCurrentItem(position).getArea()));//区县列表));
  通过post 把请求发送出去,  然后这里的600 就相当于Intent 传值一样的 (说白了也相当于是键值对吧)600也就是键, 而这里我们要传的值 就是 countyAdapter.getCurrentItem(position)。getArea(); 这个。

  到现在为止传值就已经写好了,我们还需要在接收消息的页面(MainActivity)页面进行获取值。不多说,直接上代码:

   这个方法就是接受了消息

public void onEventMainThread(Event event) {
    switch (event.getOpt()) {
        case 600:
            Log.e("AGE", 600 + "");
            tv_address.setText(event.getContent());
            break;
    }

}
    这里写的600 也就是需要 和你之前要发送消息(值)的页面中的600去匹配,如果一样,接受页面(MainActivity)接收到的就是发送消息页面(Main2Activity)传过来的值。

     虽然讲的比较浅,但是我觉得传值这块应该理解到了。 

     希望这篇文章给那些传值不太方便的同学带来帮助。。

   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值