首先创建第一个activity 谁是接受着谁去注册
package com.example.mr.xiangmu2_ecentbus; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; public class MainActivity extends AppCompatActivity { private Button tiao; private TextView tel; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //注册 EventBus.getDefault().register(this); //获取控件 tiao = findViewById(R.id.tiao); tel = findViewById(R.id.tel); //点击事件 tiao.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //getApplicationContext()----内类上下文与MainActivity.this寓意一样 Intent intent = new Intent(getApplicationContext(), Main2Activity.class); startActivity(intent); } }); } //注解为主线程----获取传送过来的值 @Subscribe(threadMode = ThreadMode.MAIN) public void fangfa(FirstEven eveen){ tel.setText(eveen.getMsgg()); } /* * 销毁后注销此注册 * */ @Override protected void onDestroy() { super.onDestroy(); //注销 EventBus.getDefault().unregister(this); } }
第二个activity负责的是接到命令点击将值传送给接收者
package com.example.mr.xiangmu2_ecentbus; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import org.greenrobot.eventbus.EventBus; public class Main2Activity extends AppCompatActivity { private Button chuan; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); //获取控件 chuan = findViewById(R.id.chuan); chuan.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { EventBus.getDefault().post( new FirstEven("长江以北,欣姐最美") ); finish(); } }); } }创建封装类好比是车厢,将数据传送到车厢,package com.example.nianxingshijian; /** * Created by Mr赵 on 2017/12/27. */ public class FirstEven { private String Msgg; public FirstEven(String s) { Msgg = s; } public String getMsgg() { return Msgg; } }
粘性事件跟普通事件差不多都是接收者去注册--首先第一个activity是传送者,点击传送一个数据
package com.example.nianxingshijian; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import org.greenrobot.eventbus.EventBus; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void fasong(View view){ EventBus.getDefault().postSticky(new FirstEven("啊里看见啥书空间的发生口角打发时间看")); Intent intent = new Intent(MainActivity.this, Main2Activity.class); startActivity(intent); } }
第二个是接收者
package com.example.nianxingshijian; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; public class Main2Activity extends AppCompatActivity { private Button tiao; private TextView tel; private boolean flag=true; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); tiao = findViewById(R.id.tiao); tel = findViewById(R.id.tel); //创建点击事件 tiao.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if(flag){ EventBus.getDefault().register(this); flag=false; } } }); } @Subscribe(threadMode = ThreadMode.MAIN,sticky = true) public void fangfa(FirstEven eveen){ tel.setText(eveen.getMsgg()); } /* * 销毁后注销此注册 * */ @Override protected void onDestroy() { super.onDestroy(); //注销 EventBus.getDefault().unregister(this); EventBus.getDefault().removeAllStickyEvents(); } }