2016-07-04 5 views
0

このクラスでは、アプリケーション上のすべてのイベントを処理しようとします。 eventBusため、Android EventBusはすべてのイベントを処理するためにsingletoneクラスを使用します

public class SignalEvents { 
    private boolean internetConnectionState; 
    private boolean activityMarketDetailState; 

    public boolean isInternetConnectionState() { 
     return internetConnectionState; 
    } 

    public void setInternetConnectionState(boolean internetConnectionState) { 
     this.internetConnectionState = internetConnectionState; 
    } 

    public boolean isActivityMarketDetailState() { 
     return activityMarketDetailState; 
    } 

    public void setActivityMarketDetailState(boolean activityMarketDetailState) { 
     this.activityMarketDetailState = activityMarketDetailState; 
    } 
} 

と送信:私は、私は公共のような単純なクラスを書いたEventBusのドキュメント、その使用クラスのコンストラクタで、私のクラスがあることをシングルトンにする必要があり、テーマを扱うために、いくつかのクラスを記述したいといけませんイベント私が使用しよう:

SignalEvents signal = new SignalEvents(); 
EventBus.getDefault().post(signal.setActivityMarketDetailState(true)); 

が、その後、私はエラーを取得:

Error:(98, 67) error: 'void' type not allowed here 

答えて

0

あなたがオブジェクトを投稿する必要があります。バージョン3を想定し

public class ActivityMarketDetailStateChanged { 
    public final boolean newState; 

    public ActivityMarketDetailStateChanged(boolean newState) { 
     this.newState = newState; 
    } 
} 

そしてあなたはEventBus 2.xまたは3.xを使用している場合に応じて、これらのイベントをサブスクライブするために登録し、:

EventBus.getDefault().post(new ActivityMarketDetailStateChanged(true)); 

そして、このようなクラスがあります。たとえば、 :

EventBus.getDefault().register(signal); 

は、あなたのSignalEventsクラスでそれを受信するためにサブスクライブする方法が必要になります。

@Subscribe 
public void onEvent(ActivityMarketDetailStateChanged event) { 
    setActivityMarketDetailState(event.newState); 
} 
+0

シングルトンクラスを使用できますか? –

+0

確かに問題はありません。 –

+0

しかし、私はそれを行うことはできません、あなたは私のクラスを修正することができますか? –

関連する問題