Android-------------EventBus通信

xiaoxiao2021-02-28  111

注:使用EventBus通信必须先注册订阅,否则值传递不了,也就是先运行注册订阅的类,再运行发送信息的类。

1.首先导一下依赖:

compile 'org.greenrobot:eventbus:3.0.0' 2.定义一个事件的类型的单独类(就是你想传的信息类型,这里只传了一个字符串) public class MessageEvent { private String message; public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } }3.此效果图是Activity2向Activity1通过点击按钮进行传值,首先定义发送事件public class SecondActivity extends AppCompatActivity { private Button bt; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.second); bt=(Button)findViewById(R.id.bt); bt.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {  //初始化自定义的类,并设置发送的内容,进行发送 MessageEvent me=new MessageEvent(); me.setMessage("你好啊!!!"); EventBus.getDefault().post(me); } }); } } 4.接收的Activity1 /** * 定义事件类型: `public class MessageEvent {}` 定义事件处理方法: `public void onMessageEvent 注册订阅者: `EventBus.getDefault().register(this)` 发送事件: `EventBus.getDefault().post(new MyEvent())` * * */ public class MainActivity extends AppCompatActivity { private Button tz; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tz=(Button)findViewById(R.id.tz); tz.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //页面的跳转  Intent intent=new Intent(MainActivity.this,SecondActivity.class); startActivity(intent); } }); } //注册订阅者 @Override protected void onStart() { super.onStart(); EventBus.getDefault().register(this); } @Override protected void onStop() { super.onStop(); } @Override protected void onDestroy() { super.onDestroy(); EventBus.getDefault().unregister(this); } //收到信息(处理事件的方法) @Subscribe(threadMode = ThreadMode.MAIN) public void onMessageEvent(MessageEvent event) { Log.e("",""+event.getMessage()); }; }

转载请注明原文地址: https://www.6miu.com/read-72984.html

最新回复(0)