2016-06-22 15 views
0

問題:
一部の通信シナリオでは、EventBusを使用しています。 私は、すでに正常に解雇され、アプリケーション内のさまざまなコンポーネントによって購読されているイベントを持っています。 このイベントを購読するにはactivityが必要です。残念ながらそれは達成されていません。EventBot:イベントによってサブスクリプションアクティビティに到達しません。

質問:
どうやってactivityはどちらか、正しくイベントをサブスクライブしないことを達成することができますか? activityの登録に問題がありますか?

注:
私はONSTART()とonStop()イベントを使用することを示唆しpostことを見出しました。

私の活動のクラス:

public class MachineActivity extends AppCompatActivity{ 

    (...) 

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

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

    @Subscribe(threadMode = ThreadMode.MAIN) 
    public void characteristicsChangeByUser(IntentChangeByUser intentChangeByUser) { 
    // Do something here. 
    } 

    (...) 
} 

EventBusクラス:

public class IntentChangeByUser { 

    int position; 
    int value; 

    public IntentChangeByUser(int position, int value){ 
    this.position = position; 
    this.value = value; 
    } 

    public int getPosition() { 
    return position; 
    } 

    public int getValue() { 
    return value; 
    } 
} 

答えて

1

あなたはonStop()で、その後EventBusの登録を解除するために間違った方法を持っているのでだろう。これに
変更:

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

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

は、その後、あなたの加入者のアクティビティに確認して、受信したイベントがあります:

@Subscribe(threadMode = ThreadMode.MAIN) 
public void characteristicsChangeByUser(IntentChangeByUser intentChangeByUser) { 
    // Do something here. 
    Log.d("Activity", "IntentChangeByUser Event received"); 
} 
関連する問題