EventBus传值(Fragment和Activity,Activity和Activity)

第一步:在build.gradle中添加依赖
dependencies {

    compile 'org.greenrobot:eventbus:3.0.0'
}
第二部创建一个javaBean,就是要保存你将要传递的内容,比如下面
 
public class FirstEvent { private final String img;  private final String name;//这里的属性自定义,根据自己传的值内容来定   public FirstEvent(String img, String mame) { this.img = img;  this.name = mame;  }
//	生成get方法,一会可以得到内容

    public String getImg() {
        return img;
    }

    public String getName() {
        return name;
    }
}

第三步就是在你要接受内容的Fragment或Activity中注册(在哪里接收,在哪里注册)

Fragment注册
在onCreateView(),onCreate(),onActivityCreated(),中注册都可以,比如在Fragment的onCreate()注册
 
@Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState);  //注册EventBus  EventBus.getDefault().register(this); }

 

Activity在onCreate()方法中注册,

 

 
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);    setContentView(R.layout.activity_login);  //注册EventBus  EventBus.getDefault().register(this);
}
然后在接受的Fragment或Activity添加这个方法,用来接受传过来的值
 
 
@Subscribe //这个必须存在,不然程序会蹦 public void onEventMainThread(FirstEvent event) { 
event.getImg();
	event.getName();就可以拿到你传过来的值,然后执行后续操作

}

接下来就是在接收内容的Fragment或Activity中注销
 
@Override public void onDestroy() { super.onDestroy();  EventBus.getDefault().unregister(this);//反注册EventBus }

 

下来就是发送消息

 

 
EventBus.getDefault().post(new FirstEvent(img, name));//内容根据自己创建的javaBean来决定
 

 

 

你可能感兴趣的:(Android)