6

Greenrobot EventBus を使用して、あるアクティビティから別のアクティビティにイベントを渡します。

フローは次のようなものです: Activity1 開始 -> バーコードのスキャン -> Activity2 開始 -> 応答を受け入れるか拒否し、Activity1 にイベントを送信します。

したがって、Activity2 は、次のようにして新しいイベントを Activity1 に送信します。

@Override
public void onCreate(){
  EventBus.getDefault().register(this);
  // other initialization code
  EventBus.getDefault().post(new MyEvent());
}

Activity1 では、イベント バスを登録します。また、イベントを受け取るための public onEvent(MyEvent myEvent) メソッドもあります。

問題は、onEvent がトリガーされないことです。イベント バス オブジェクトに問題がある可能性があることを確認しました (別のインスタンスやアクティビティ 1 と 2 の何かなど) が、同じインスタンスです。

何が問題なのかわかりません。誰かが見て、私が間違っていることを教えてくれたら、とても感謝しています。

ありがとう!

4

4 に答える 4

0

クラステスト

public class TestEventBus {

private String label;

public String getLabel() {
    return label;
}

public void setLabel(String label) {
    this.label = label;
}
}

活動A

TestEventBus t = new TestEventBus();
t.setLabel("oi");
EventBus.getDefault().post( t );

アクティビティ B

@Subscribe(sticky = true, threadMode = ThreadMode.MAIN)
public void onMessageEvent(TestEventBus test) {

Toast.makeText(this, "label "+test.getLabel(), 
Toast.LENGTH_SHORT).show();

};

@Override
public void onStart() {
  super.onStart();
  EventBus.getDefault().register(this);
}

@Override
public void onStop() {
  super.onStop();
  EventBus.getDefault().unregister(this);

 }
于 2018-03-14T17:54:00.023 に答える