EventBus两个Activity传值

EventBus是针一款对Android的发布/订阅事件总线。它可以让我们很轻松的实现在Android各个组件之间传递消息,并且代码的可读性更好,耦合度更低。

依赖:compile ‘org.greenrobot:eventbus:3.0.0’

  • 1.1MainAcivity主方法
public class MainActivity extends AppCompatActivity {

    //注解
    @ViewInject(R.id.onbut)
    private Button but;
    private TextView ontv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ontv = (TextView) findViewById(R.id.ontv);

        //注册EventBus
        EventBus.getDefault().register(this);
    }


    public void onButton(View v){
        Intent intent = new Intent(MainActivity.this, SecondActivity.class);
        startActivity(intent);

    }

    //特别重要  @Subscribe(threadMode = ThreadMode.MAIN)
    @Subscribe(threadMode = ThreadMode.MAIN)
    public void onEventThread(FirstEvent event){
        String msg = "onEventThread已经收到了消息"+event.getmEvent();
        ontv.setText(msg);
        Toast.makeText(this,msg,Toast.LENGTH_SHORT).show();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        //反注册EventBus
        EventBus.getDefault().unregister(this);
    }
}
  • 1.2、SecondeActivity第二个页面
public class SecondActivity extends Activity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.second);

    }
    public void onPlay(View v){
        EventBus.getDefault().post(new FirstEvent("FirstEvent btn clicked222"));
    }

}

1.3、FirstEvent的一个方法

public class FirstEvent {
    private String mEvent;

    public String getmEvent() {
        return mEvent;
    }

    public void setmEvent(String mEvent) {
        this.mEvent = mEvent;
    }

    public FirstEvent(String mEvent){
        this.mEvent = mEvent;
    }
}
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
EventBus 是一种常用的事件发布/订阅机制,用于在不同组件之间传递数据。它可以帮助组件之间解耦,简化通信。 在使用 EventBus 进行数据传递时,通常需要遵循以下步骤: 1. 首先,定义事件类:创建一个用于传递数据的事件类,该类包含所需的数据字段和方法。 2. 注册订阅者:在接收数据的组件中注册为订阅者。这样,当有事件发布时,该组件就能接收到相应的数据。 3. 发布事件:在需要传递数据的地方,创建并发布事件对象。事件对象包含要传递的数据。 4. 订阅事件:在订阅者中定义一个方法,用于处理接收到的事件。该方法会在事件发布时被调用,并可以获取到事件中的数据。 下面是一个简单的示例代码,演示了如何使用 EventBus 进行数据传递: ```java // 定义事件类 class MessageEvent { private String message; public MessageEvent(String message) { this.message = message; } public String getMessage() { return message; } } // 订阅者 class Subscriber { @Subscribe public void onMessageEvent(MessageEvent event) { System.out.println("接收到消息:" + event.getMessage()); } } // 发布者 class Publisher { public void sendMessage(String message) { // 创建事件对象并发布 EventBus.getDefault().post(new MessageEvent(message)); } } // 在需要的地方注册订阅者 EventBus.getDefault().register(new Subscriber()); // 在需要的地方使用发布者发布事件 Publisher publisher = new Publisher(); publisher.sendMessage("Hello, EventBus!"); ``` 以上是一个简单的示例,展示了如何使用 EventBus 进行数据传递。根据实际需求,你可以根据自己的情况来定义事件类、订阅者和发布者,并进行相应的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值