标签: event-bus

我的被​​解雇的GWT事件不由父主持人​​处理

我有一个子演示者(添加到插槽中的父节点),eventBusonBind()调用时通过(在条件下)触发事件:

class ChildPresenter extends PresenterWidget<?> {

        void onBind() {

               instance = initMyInstance();

               if (instance == null) {
                        eventBus.fireEvent(new MyEvent());
               }
        }

       //...
}
Run Code Online (Sandbox Code Playgroud)

在父级上,我在onBind()方法中处理事件,如下所示:

class ParentPresenter extends Presenter<..>{

     void onBind() {

           eventBus.addHandler(MyEvent.TYPE, new MyEventHandler() {...} );
     }
}
Run Code Online (Sandbox Code Playgroud)

我也试过这个父:addRegisteredHandler(LoggedOutEvent.TYPE, this)addVisibleHandler(...)太,在这里我实现MyEventHandler父演示接口,但它不处理触发的事件.

我做错了吗?我也注意到当我将处理过程移动到onReveal()我的父母演示者的方法时,它工作了两次!!

gwt event-bus gwt-platform gwtp

1
推荐指数
1
解决办法
475
查看次数

奥托活动巴士:不同的活动课程

Otto如何处理不同的事件类?可以有不同的事件类吗?

只有听取特定事件类的听众才会收到通知吗?例如下面的示例是否可以工作,只有A类中的监听器被通知?假设EventClassA并且EventClassB不扩展相同的超类.

class A {
    @Subscribe
    public void handleEvent(EventClassA event)
    {
            //
    }
}

class B {
    @Subscribe
    public void handleEvent(EventClassB event)
    {
            //
    }
}

class C {
    public void postEvent() {
        bus.post(new EventClassA());
    }
}
Run Code Online (Sandbox Code Playgroud)

events android event-bus otto

1
推荐指数
1
解决办法
472
查看次数

Otto事件总线未从一个活动触发到另一个具有片段的活动

我对使用事件总线并不陌生,但是在以下情况下出现了奇怪的行为:

我有MainActivity,其中有两个片段需要使用Otto从MainActivity启动的SecondActivity中的事件总线来更新其内容。问题是,当SecondActivity启动时,MainActivity暂停,因此,该总线将在其onPause方法内取消注册,并且EventBus从SecondActivity触发其事件时,MainActivity下的两个片段将不会接收到该总线。

顺便说一句,MainActivity有一个订户方法来从AsyncTask线程接收更新,因此它也应该注册和注销事件总线。

这是我的BusProvider课程代码:

public class BusProvider {

   private static final Bus BUS = new Bus(ThreadEnforcer.ANY);

   public static Bus getInstance() {
       return BUS;
   }

   private BusProvider() {
   }
}
Run Code Online (Sandbox Code Playgroud)

这是我的MainActivity事件总线代码:

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

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

@Subscribe
public void onAsyncResult(SomeEvent event) {
    // do something
}
Run Code Online (Sandbox Code Playgroud)

这是我的FragmentA和FragmentB事件总线代码:

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

@Override
protected void onPause() { …
Run Code Online (Sandbox Code Playgroud)

android event-bus android-activity otto

1
推荐指数
1
解决办法
893
查看次数

Vue2从循环组件中的子级调用父方法

我正在循环具有子组件的根组件。

<root-select v-for="offer in offers"  >
   <child-options v-for="item in options" >
   </child-options>
</root-select>
Run Code Online (Sandbox Code Playgroud)

但是,当我$emit从 child 获取 root 函数时,我所有的 root 组件都更改了这些数据。

孩子:

EventBus.$emit('toggle', value);
Run Code Online (Sandbox Code Playgroud)

根:

EventBus.$on('toggle', this.toggle);
Run Code Online (Sandbox Code Playgroud)

但我需要,该数据仅在触发组件中更改。

谢谢。

javascript event-bus vue.js vue-component vuejs2

1
推荐指数
1
解决办法
4121
查看次数

两个片段之间的EventBus事件未触发

问题:我使用EventBusgreenrobot通过一些事件。不幸的是,对于在两个之间fragments不传递数据的情况,它对我有用。因此,该事件不会被触发。

问题:我会误解这个概念吗?还是我的代码有错误?

注意:两个片段在发送事件时都存在。一个fragment是父母,另一个是孩子以显示详细信息。

详细片段:

public class DetailFragment extends Fragment {
(...)

refreshButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
EventBus.getDefault().post(new IntentRefresh());
            }
        });
(...)

}
Run Code Online (Sandbox Code Playgroud)

EventBus类别:

public class IntentRefresh {

    public IntentRefresh (){}

    public void refreshParent() {

    }

}
Run Code Online (Sandbox Code Playgroud)

父片段:

public class ParentFragment extends Fragment {

    (...)

    @Override
    public void onPause() {
        super.onPause();
        EventBus.getDefault().unregister(this);
    }

    @Override
    public void onResume() {
        super.onResume();
        EventBus.getDefault().register(this);
    }

    @Subscribe(threadMode = ThreadMode.MAIN)
    public void …
Run Code Online (Sandbox Code Playgroud)

android callback event-bus android-fragments

0
推荐指数
1
解决办法
1052
查看次数

Vertx 中同步发送 EventBus 消息

我想通过 Vertx 中的 EventBus 同步发送多条消息。我想发送一条消息,等待它,然后再发送下一条消息。地址是一样的。如果是默认的话我该怎么做?还是必须使用executeBlocking代码?

这是我的代码。

public class EventBusSync {
    private Vertx vertx = Vertx.vertx();
    private static final String SERVICE_ADDRESS =  "service.worker";
    
  public void sentViaEvBus() {
    String message1 = "message1";
    String message2 = "message2";
    
    String reply1 = sendCommand(SERVICE_ADDRESS,message1);
    String reply2 = sendCommand(SERVICE_ADDRESS,message2);

  }

  private String sendCommand(String address, String command) {
   String message;
   vertx.eventBus().send(address,command, handler -> {
    if(handler.succeeded()) {
     log.info("success");
   } else {
     log.error("error",handler.cause());
     throw new RuntimeException("ERROR");
    }
    message = handler.result.body();
    });
 return message;
  }
 }
Run Code Online (Sandbox Code Playgroud)

所以在这里,如果发送第一个命令并且发生了一些事情,我想中断下一个事件总线的发送。

谢谢

java reactive-programming event-bus vert.x rx-java

0
推荐指数
1
解决办法
2852
查看次数