EventBus理解

来源:互联网 发布:马克斯cms模板防盗 编辑:程序博客网 时间:2024/06/09 13:45

      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()方法中反注册。代码如下:

@Overrideprotected 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)传过来的值。

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

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

   

1 0
原创粉丝点击