10

アクティビティとフラグメントの間で greenrobot パス データを使用しようとしましたが、詳細な方法を示す適切なチュートリアルが見つかりませんでした。これまで読んだ内容に基づいて、このようなことを書きましたが、うまくいきません。緑のロボットを使用して、まだ初期化されていないアクティビティまたはフラグメントにデータを渡すにはどうすればよいですか?

主な活動 :

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    EventBus.getDefault().post(new String("We are the champions"));
    Intent intent = new Intent("com.test.Activity_Lessons");
    startActivity(intent);
}

アクティビティ_レッスン:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //Some initializations
    EventBus.getDefault().register(this);
    //Other Stuff
}

public void onEventMainThread(String s){
    Toast.makeText(getActivity(), s, Toast.LENGTH_LONG).show();
}

ここでイベント ハンドラが呼び出されることはありません。何が間違っていますか?

4

4 に答える 4

17

EventBus には、イベントをポストおよび登録するための 2 つのメソッドがあります。アクティビティまたはフラグメントがまだ初期化されていない場合は、登録およびポストの代わりに registerSticky および postSticky を使用できます。

ここに私自身の修正されたコードがあります:

主な活動 :

@Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    EventBus.getDefault().postSticky(new String("We are the champions"));
    Intent intent = new Intent("com.test.Activity_Lessons");
    startActivity(intent);
}

アクティビティ_レッスン:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //Some initializations
    EventBus.getDefault().registerSticky(this);
    //Other Stuff
}

public void onEventMainThread(String s){
    Toast.makeText(getActivity(), s, Toast.LENGTH_LONG).show();
}
于 2014-01-28T11:21:46.720 に答える
2

ArminとDavidの回答に追加するためにpostSticky、次のように購読者の注釈を書いた後にのみ作業を行いました:

@Subscribe(sticky = true, threadMode = ThreadMode.MAIN)

スティッキー イベントの EventBus ドキュメントに記載されているとおり

于 2016-12-02T00:27:24.893 に答える
1

Armin の回答 (最初に承認された回答) は正しいです。

ただし、EventBus 3.0.0 (現時点での最新バージョン) 以降を使用している場合は、これを使用できません。

EventBus.getDefault().registerSticky(this);

これは、registerSticky メソッドが廃止され、削除されたためです。次のように register メソッドを使用できます。

EventBus.getDefault().register(this);

これが、最新のライブラリと技術を使用する開発者に役立つことを願っています。乾杯!

于 2016-07-14T19:51:19.853 に答える