奥托事件不开火
Otto event no firing
我有一个 activity 并且它启动一个 DialogFragment,在事件完成时 DialogFragment 在 Otto 事件总线上发布一个事件,这是为了在它的父 activity 中触发一个方法。我在这里发布了相关代码,相同的代码在我的应用程序的其他地方也有效,但这里的事件只是没有触发。
代码在 activity...
@Subscribe
public void OttoUpdateUI(BudgetUpdateObject budgetUpdateObject)
{
updateUI();
Log.d("budget", "Otto updateUI called");
}
@Override
public void onResume() {
super.onResume();
BusStand.getInstance().register(BudgetActivityNew.class);
}
@Override
public void onPause() {
super.onPause();
BusStand.getInstance().unregister(BudgetActivityNew.class);
}
公交车站class.....
public final class BusStand {
private static final Bus BUS = new Bus();
public static Bus getInstance() {
return BUS;
}
private void BusProvider() {
}
}
和触发事件...
BusStand.getInstance().post(new BudgetUpdateObject());
我已经检查了 activity 中的导入,我没有使用 dagger 模块,也没有使用任何其他事件总线。任何帮助都感激不尽。
这是我从 activity 启动 DialogFragment 的方式...
AddBudgetDialogFragment addBudgetDialogFragment = new AddBudgetDialogFragment();
addBudgetDialogFragment.setStyle(DialogFragment.STYLE_NO_TITLE,0);
addBudgetDialogFragment.show(getSupportFragmentManager(),"DialogFragment");
您需要在 Bus
上注册您的 DialogFragment
。 Post 您 DialogFragment
的代码,以便我可以帮助您。
感谢 these 伙计们找到了答案....AndroidAnnotations 覆盖了@subscribe,所以我的订阅事件从未被触发,通过使用断点找到了这个....太糟糕了,我搬家了到EventBus,一切正常....真可惜我非常喜欢otto.....
问题是您没有注册 Activity 实例,您正在注册 class:
BusStand.getInstance().register(BudgetActivityNew.class);
您应该将代码更改为:
BusStand.getInstance().register(this);
应该可以了。 :)
在我的例子中,我在 class 中导入了一个错误的库 class。检查你的导入~
对我来说,替换:
import com.google.common.eventbus.Subscribe;
有了这个:
import com.squareup.otto.Subscribe;
希望这对某人有所帮助。
我有一个 activity 并且它启动一个 DialogFragment,在事件完成时 DialogFragment 在 Otto 事件总线上发布一个事件,这是为了在它的父 activity 中触发一个方法。我在这里发布了相关代码,相同的代码在我的应用程序的其他地方也有效,但这里的事件只是没有触发。
代码在 activity...
@Subscribe
public void OttoUpdateUI(BudgetUpdateObject budgetUpdateObject)
{
updateUI();
Log.d("budget", "Otto updateUI called");
}
@Override
public void onResume() {
super.onResume();
BusStand.getInstance().register(BudgetActivityNew.class);
}
@Override
public void onPause() {
super.onPause();
BusStand.getInstance().unregister(BudgetActivityNew.class);
}
公交车站class.....
public final class BusStand {
private static final Bus BUS = new Bus();
public static Bus getInstance() {
return BUS;
}
private void BusProvider() {
}
}
和触发事件...
BusStand.getInstance().post(new BudgetUpdateObject());
我已经检查了 activity 中的导入,我没有使用 dagger 模块,也没有使用任何其他事件总线。任何帮助都感激不尽。
这是我从 activity 启动 DialogFragment 的方式...
AddBudgetDialogFragment addBudgetDialogFragment = new AddBudgetDialogFragment();
addBudgetDialogFragment.setStyle(DialogFragment.STYLE_NO_TITLE,0);
addBudgetDialogFragment.show(getSupportFragmentManager(),"DialogFragment");
您需要在 Bus
上注册您的 DialogFragment
。 Post 您 DialogFragment
的代码,以便我可以帮助您。
感谢 these 伙计们找到了答案....AndroidAnnotations 覆盖了@subscribe,所以我的订阅事件从未被触发,通过使用断点找到了这个....太糟糕了,我搬家了到EventBus,一切正常....真可惜我非常喜欢otto.....
问题是您没有注册 Activity 实例,您正在注册 class:
BusStand.getInstance().register(BudgetActivityNew.class);
您应该将代码更改为:
BusStand.getInstance().register(this);
应该可以了。 :)
在我的例子中,我在 class 中导入了一个错误的库 class。检查你的导入~
对我来说,替换:
import com.google.common.eventbus.Subscribe;
有了这个:
import com.squareup.otto.Subscribe;
希望这对某人有所帮助。