java - 使用 Otto 将数据从 Activity 传递到 Activity 不起作用

标签 java android otto

这是我第一次使用这个库,但我一直在关注 this通过 Fragments 发送数据的视频教程,但在我的例子中,它只是 Activities..所以我是这样做的

我正在发送数据的 Activity :

public void onClick(View view) {
    String passing_data = new Gson().toJson(user);
    BusStation.getBus().post(new MessageData(passing_data));
    Intent intent = new Intent(activity,UserAdsView.class);
    activity.startActivity(intent);
}

BusStation 类:

public class BusStation {
    private static Bus bus = new Bus();

    public static Bus getBus() {
        return bus;
    }
}

消息数据类:

public class MessageData {
    private String msgData;

    public MessageData(String msgData) {
        this.msgData = msgData;
    }

    public String getMsgData() {
        return msgData;
    }
}

最后是 UserAdsView Activity :

@Override
protected void onResume() {
    super.onResume();
    BusStation.getBus().register(this);
}

@Override
protected void onPause() {
    super.onPause();
    BusStation.getBus().unregister(this);
}

@Subscribe
public void recievedData(MessageData messageData){
    target = messageData.getMsgData();
    Toast.makeText(getApplicationContext(), target, Toast.LENGTH_SHORT).show();
}

如视频中所述,应该触发此方法 recievedData!

最佳答案

当您当时在第一个 Activity 中发送通知时,UserAdsView Activity 未注册 因此没有事件监听器。

在这一行

 BusStation.getBus().post(new MessageData(passing_data));

您正在发送通知,但没有注册接收此通知。即 UserAdsView Activity 尚未开始。

If you need to pass data to activity at launch time, simply send it via Intent.

关于java - 使用 Otto 将数据从 Activity 传递到 Activity 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41972264/

相关文章:

java - 每5秒调用一次API的Android后台任务

android - 设置默认(未聚焦)TextInputLayout 提示 textSize

java - 建议将 Handler 与 EventBus/Otto 一起使用?

android - 奥托事件收到两次

java - 谷歌地图尝试创建未注册类型的平台 View

java - 模拟方法返回 null 而不是预期的对象

java - 在 hashmap 中实现 put 方法

android - 是否可以直接在string.xml中设置字符串的颜色?

android-fragments - 其他 Activity 中的 OTTO 和 Fragments

java - 需要帮助捕获异常