1

せずに登録します。基本クラスには、@Subscribeと、FragmentAという2つのメソッドはありませんが、いずれにしても登録する必要があります。の場合は、を追加します。EventBus:私は(... <code>FragmentA</code>、<code>FragmentB</code>)<code>onStart()/onStop()</code>で<code>EventBus</code>へ/登録解除自体、およびそれを継承するいくつかの子クラスを登録<code>BaseFragment</code>クラスを持っている任意の@Subscribeアノテーション付きメソッド

私はSquareUp's Ottoを使用した場合と同様に、起こることは何も除いて、任意の@Subscribeアノテーション付きメソッドを持っていますが、EventBusが例外をスローしないオブジェクトに登録した場合:

org.greenrobot.eventbus.EventBusException: Subscriber class com.company.app.FragmentA and its super classes have no public methods with the @Subscribe annotation 

なぜ例外をスローしますか?つまり、アプリの実行を妨げるものではありません。

は醜いtry ... catchBaseFragmentregister()/unregister()呼び出しをラップする唯一のソリューションですかクリーナー回避策はありますか?

+0

あなたの方法は、パブリックでなければなりませんすべてチェックしてください。 –

+0

@oguzhand注意深く読んでみると、 '@ Subscribe'アノテーションを持つメソッドがまったくないことがわかります。 – Flawyte

+1

ベースフラグメントにダミーの注釈付きメソッドを実装できますか? – lelloman

答えて

1

あなたの子供の破片がスローする例外なしに何@Subscribeメソッドを持っていないことができるようにしたい場合は、単にベースクラスで空の加入者を置く:@Subscribe注釈付き

@Subscribe 
public void dummyEvent(SomeClassThatWillNeverBePosted event) {} 
0

私はあなたが各断片に対して別々に登録/登録解除するべきだと思います。基本フラグメントでこれを行うと、子フラグメントは同じイベントを登録しますが、各フラグメントは異なるイベントを持つためです。

関連する問題

 関連する問題