OnEvent 使用 EventBus 投射不正确的事件 Object
OnEvent cast incorrect event Object using EventBus
我在 Activity (BaseActivity)
和 Fragment (BaseFragment)
上都注册了 EventBus
。所以,我用以下方法捕捉事件:
在 BaseActivity
和 BaseFragment
我有相同的代码:
public void onEvent(Object object) {
// do nothing
}
在 BaseFragment
的 child fragment (A)
extended
中,我有一个事件 XYZEvent
,我希望调用此方法:
public void onEvent(XYZEvent event) {
// my logic, not called :(
}
但事实并非如此。我已经调试过了,BaseActivity
和BaseFragment
中的onEvent都被调用了。
所以,我改变了我的 fragment (A)
如下:
public void onEvent(Object event) {
if(event instanceof XYZEvent) {
// my logic
// after changed this block code is called (~_~), why???
}
}
它叫。
所以,我想知道当 onEvent(XYZEvent event)
没有被解雇时我错过了什么?但是 onEvent(Object event)
做到了。似乎返回的事件有错误的转换,我的 XYZEvent
被转换为 Object
.
P/S:我使用了这个库 compile 'de.greenrobot:eventbus:2.4.0'
并且 XYZEvent 包含一个 Serializable
object
好的,这是我的错误。我在服务中有一个 onEvent 方法,它已经窃取了我的 XYZEvent。
我在 Activity (BaseActivity)
和 Fragment (BaseFragment)
上都注册了 EventBus
。所以,我用以下方法捕捉事件:
在 BaseActivity
和 BaseFragment
我有相同的代码:
public void onEvent(Object object) {
// do nothing
}
在 BaseFragment
的 child fragment (A)
extended
中,我有一个事件 XYZEvent
,我希望调用此方法:
public void onEvent(XYZEvent event) {
// my logic, not called :(
}
但事实并非如此。我已经调试过了,BaseActivity
和BaseFragment
中的onEvent都被调用了。
所以,我改变了我的 fragment (A)
如下:
public void onEvent(Object event) {
if(event instanceof XYZEvent) {
// my logic
// after changed this block code is called (~_~), why???
}
}
它叫。
所以,我想知道当 onEvent(XYZEvent event)
没有被解雇时我错过了什么?但是 onEvent(Object event)
做到了。似乎返回的事件有错误的转换,我的 XYZEvent
被转换为 Object
.
P/S:我使用了这个库 compile 'de.greenrobot:eventbus:2.4.0'
并且 XYZEvent 包含一个 Serializable
object
好的,这是我的错误。我在服务中有一个 onEvent 方法,它已经窃取了我的 XYZEvent。