1

需要帮助https://github.com/square/otto

在我的应用程序中,我有

ActivityBase和 :

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

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

ActivityOperationBase extends ActivityBase和 :

@Subscribe
public void onNextStepRequest(NextStepRequestEvent event) {
    //...
}

ActivityMobile extends ActivityOperationBaseFragmentCommonEnterMoney里面。这个片段有按钮

SmartApplication.bus.post(new NextStepRequestEvent(/*params*/));

点击它。但它不火

 @Subscribe
 public void onNextStepRequest(NextStepRequestEvent event) {
     //...
 }

我究竟做错了什么 ?

4

1 回答 1

1

这是因为您正在创建新的NextStepRequestEvent,而不是调用onNextStepRequest

实际上你想onNextStepRequest从片段中使用,来做这个创建接口

public interface OnNextStepRequestCallback{
  public void onNextStepCallback(NextStepRequestEvent event);
}

并使用它

public class ActivityMobile extends ActivityOperationBase implement OnNextStepRequestCallback {

    public void onNextStepCallback(NextStepRequestEvent event){
       onNextStepRequest(event);
    }   
}

要调用上述方法 passOnNextStepRequestCallbackFragmentCommonEnterMoneyfrom ActivityMobilelike 的引用(或覆盖 Fragment's onAttach

FragmentCommonEnterMoney  frag = new FragmentCommonEnterMoney();
frag.setOnNextStepRequestCallback(this);

在你的FragmentCommonEnterMoney使用范围内

public class FragmentCommonEnterMoney  extends Fragment{
private OnNextStepRequestCallback eventCallback;

    public void setOnNextStepRequestCallback(OnNextStepRequestCallback callback) {
         eventCallback = callback;
    }
}

并用于从您的片段eventCallback触发onNextStepRequest

于 2015-05-01T14:23:02.270 回答