Otto Subscribe方法未在另一个Activity中从Activity调用Fragment

时间:2015-10-26 14:34:52

标签: android android-fragments android-activity android-fragmentactivity otto

这是我打电话的第一个活动。总线提供程序是otto示例应用程序中的默认提供程序。

void openNextActivity()
{
    manager.bus.post("Hi");
    // Intent to my next Activity
}

这是我订阅数据的另一个活动中的片段。收到的总线是相同的,但订阅方法没有被调用。

public class ProductListFragment extends BaseFragment  {

     String LOG_TAG = ProductListFragment.class.getCanonicalName();

     public static ProductListFragment newInstance() {
         ProductListFragment fragment = new ProductListFragment();
         return fragment;
     }

     public ProductListFragment() {
        // Required empty public constructor
     }

     @Override
     public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          getActivity().invalidateOptionsMenu();
     }

     @Override
     public void onResume() {
         super.onResume();
         BusProvider.getInstance().register(this);
     }

     @Override
     public void onPause() {
       super.onPause();
       BusProvider.getInstance().unregister(this);
    }

    @Subscribe public void onPostRecived(String s) {
       Log.d(LOG_TAG, s);
    }

}

收到的任何内容都没有错误,但是如果我在片段上点击一个按钮并从那里发布一些内容,则会调用subscribe方法。例如。

@OnClick(R.id.makePostCall) void call() {

     BusProvider.getInstance().post("Hi");
}

我正在通过此次通话获得相应的日志。知道代码出错的地方吗?

2 个答案:

答案 0 :(得分:1)

你在意图之前发送消息;在意图之后注册的new Handler().postDelayed(new Runnable() { @Override public void run() { BusProvider.getInstance().post("Hi"); } },3000); id; 试试吧:

MATCH (a)-[:LEADS_TO]->[]
WITH a,rand() AS rand
ORDER BY rand LIMIT {YourLimit}
MATCH (a)-[l:LEADS_TO]->(t)
RETURN a,l,t

答案 1 :(得分:1)

似乎您在将内容发送到事件总线后订阅了您的第二个活动的片段。考虑改变你的逻辑