2017-09-26 13 views
1

私はViewをカスタマイズしています。そこからイベントを聞きたいです。 show()メソッドとhide()メソッドを作成し、登録メソッド&を登録解除します。 しかし、私はEventBusカスタムビュー

public class CalculatorView extends RelativeLayout { 
....... 

public void show() { 
    Log.i("hieu", "eventBus register"); 
    EventBus.getDefault().register(this); 
} 

public void hide() { 
    EventBus.getDefault().unregister(this); 
    Log.i("hieu", "eventBus unreg"); 
} 

@Subscribe(threadMode = ThreadMode.MAIN) 
public void onEvent(EventBusMessage eventBusMessage) 
{ Log.i("hieu", ""); } 

を入れてみましたが、それはonEventに跳ね上がっていませんでした。 私はEventBus 3.0.0を使用しています。 アーカイブ方法ありがとう。

答えて

1
public class ApplicationTest extends ApplicationTestCase<Application> { 
public ApplicationTest() { 
    super(Application.class); 
} 

public void testRun() { 
    CalculatorView view = new CalculatorView(getContext()); 
    view.show(); 
    EventBus.getDefault().post(new EventBusMessage()); 
    view.hide(); 
} 

public class CalculatorView extends RelativeLayout { 

    public CalculatorView(Context context) { 
     super(context); 
    } 

    public void show() { 
     Log.i("hieu", "eventBus register"); 
     EventBus.getDefault().register(this); 
    } 

    public void hide() { 
     EventBus.getDefault().unregister(this); 
     Log.i("hieu", "eventBus unreg"); 
    } 

    public void onEvent(EventBusMessage eventBusMessage) { 
     Log.i("hieu", ""); 
    } 
} 

class EventBusMessage { 

} 

}

この仕事できないのですか?

enter image description here

それは私のテストコードで動作します。

+0

はい。それはうまくいかなかった。私はなぜそれがonEventにジャンプしなかったのかわかりません。 – TruongHieu

+0

私はテストをして、それは働いています。私のテストコードを試すことができます。 –

+0

それは再び動作します。私はLogcatが空の文字列をログに記録しないことに気付きました。私を助けてくれてありがとう。 あなたのonEventメソッドには少なくともバージョン3.0.0では@Subscribeが必要です。 – TruongHieu