2

カスタム EditText ビューがあります。デフォルトのものを拡張し、TimePickerDialogFragment、NumberPickerDialogFragment などを表示する機能を追加します...

親アクティビティへの再接続を不要にするために、すべての FragmentDialogs はバス システムで動作しています...

通常、作成時にすべてのオブジェクトを登録し、onPauseそれらの親アクティビティでそれらを登録解除します...そのためにスコープ付きバスを使用します。これにより、登録されたすべてのオブジェクトへの参照が保存されonPause、アクティビティで自動的に登録解除されます。その作業は今のところ最適です。すべてのカスタム クラスは、スコープ バスへの参照を受け取るコンストラクターを使用します。したがって、クラスはスコープ バスに自分自身を登録するだけでよく、それ自体を登録解除する必要はありません。スコープ バスはそれを自動的に行います。

カスタム edittext の登録は問題ありませんが、自動的に登録を解除するにはどうすればよいですか? XML でビューを追加していますが、それらすべてをスコープ バスに手動で追加する必要はありません。

登録解除を何らかの形で自動化する方法を知っている人はいますか?

4

1 に答える 1

1

Ottoを使っているので。彼らがどのように@Subscribeメソッドを見つけているかを見ることができます: https://github.com/square/otto/blob/master/library/src/main/java/com/squareup/otto/AnnotatedHandlerFinder.java

設計の観点 (IMO) から見ると、ビューには 2 つの役割が混在しています。UI 表現と下位システム層との通信です。常識的なルール - クラスは 1 つのことだけを担当します。

これについては、別の観点から考えることができます。バスを使用しないプロジェクトでそのようなコンポーネントを再利用することは非常に困難です。システム コンポーネントをオープン ソース化する場合と同じように、内部設計について考えてください。

于 2013-08-23T13:14:02.343 に答える