android之 eventBus简单实用

来源:互联网 发布:java转义html特殊字符 编辑:程序博客网 时间:2024/05/30 04:53

使用环境:

   两个界面需要传递参数,不论这两个界面在哪,只要在一个app里。 

  几遍一个是fragment,一个是activity,两个没有依赖关系。

  或者一个是a activity的fragment,一个是b activity的fragment,也可以传递数据。

使用方法:

  1 build.gradle的引用:

compile 'org.greenrobot:eventbus:3.0.0'//eventBus引用

 2 根据需要传递的参数,创建一个类:

    类名随便起,格式统一就行。

    个人感觉,就是一个bean类,但是加上来 event好区分。

public class AddressBeanEvent {    /**     * addr : 河南省南阳市南阳站河南省南阳市南阳站长江东路春华苑1号楼     * addr_id : 2     * consignee : 徐炜彤     * isOften : 1     * lat : 33.017851     * lng : 112.545967     * map_addr : 南阳市     * mobile : 18603000000     */    private String addr;    private String addr_id;    private String consignee;    private String isOften;    private String lat;    private String lng;    private String map_addr;    private String mobile;    public AddressBeanEvent(String addr,String addr_id,String consignee,String isOften,String lat,String lng,String map_addr,String mobile){        this.addr = addr;        this.addr_id = addr_id;        this.consignee = consignee ;        this.isOften = isOften;        this.lat = lat;        this.lng = lng;        this.map_addr = map_addr;        this.mobile = mobile;    }    public String getAddr() {        return addr;    }    public void setAddr(String addr) {        this.addr = addr;    }    public String getAddr_id() {        return addr_id;    }    public void setAddr_id(String addr_id) {        this.addr_id = addr_id;    }    public String getConsignee() {        return consignee;    }    public void setConsignee(String consignee) {        this.consignee = consignee;    }    public String getIsOften() {        return isOften;    }    public void setIsOften(String isOften) {        this.isOften = isOften;    }    public String getLat() {        return lat;    }    public void setLat(String lat) {        this.lat = lat;    }    public String getLng() {        return lng;    }    public void setLng(String lng) {        this.lng = lng;    }    public String getMap_addr() {        return map_addr;    }    public void setMap_addr(String map_addr) {        this.map_addr = map_addr;    }    public String getMobile() {        return mobile;    }    public void setMobile(String mobile) {        this.mobile = mobile;    }}

  3 传递参数:

     传参使用的是上面的构造方法,所以构造方法一定要有。

     个人的做法就是得到需要传递的参数,然后调用eventbus的方法,就可以了。

String addr = loc[1];String name = holder.ofter_name.getText().toString();String lat = holder.ofter_lat.getText().toString();String lng =holder.ofter_lng.getText().toString();String map_addr = loc[0];String mobile = holder.ofter_phone.getText().toString();EventBus.getDefault().post(new AddressBeanEvent(addr,null,name,null,lat,lng,map_addr,mobile));//!!

 4 接收参数的时候,需要注册;在界面消失的时候需要取消注册!

   在接受界面注册的方法:

EventBus.getDefault().register(this);

  接收的方法:

@Subscribe          //订阅事件FirstEventpublic void onEventMainThread(AddressBeanEvent event) {    /**     * addr : 河南省南阳市南阳站河南省南阳市南阳站长江东路春华苑1号楼     * addr_id : 2     * consignee : 徐炜彤     * isOften : 1     * lat : 33.017851     * lng : 112.545967     * map_addr : 南阳市     * mobile : 18603000000     */    String mobile = event.getMobile();    String map_addr = event.getMap_addr();    String addr = event.getAddr();    write_eidt_phone.setText(mobile);    write_eidt_loc.setText(map_addr);    write_eidt_loc_detial.setText(addr);}//取消注册的方法@Overridepublic void onDestroy() {    super.onDestroy();    EventBus.getDefault().unregister(this);}

是比广播简单,使用。





原创粉丝点击