Android LayoutからActivity FieldへのViewの注入
まったくAndroidの話しになっていませんでしたけど、Android+Guiceを調べ始めたのは元々ActivityのFieldへのViewの注入がうざいのをスマートに解決できないかなー?という事でした。
ここまで調べて来て今更なんですが、、、、ActivityのLife Cycleは基本的にAndroidのSystem側まかせだからダメじゃね?…orz
って事で今日は別アプローチを。
Activityで宣言したFieldに対してViewの実態の注入をするために以下のようなコードを書いている人が殆どじゃないのかなと。
不満点は、、、
- リソースとの関連付けが直感的でない。
- キャストしている。
- コードが長い。
といったあたりでしょうか。
最近DIにも慣れてきたので、ここの改善に使えるかなと思っていたのです。
ですが通常FactoryからInstanceを作成してその時に依存性を注入するDIの実装とは違って、ActivityはAndroidのSystemが作りますしLayoutをロードするまでは注入すべきViewも存在しない状態です。
というわけで、今のアプローチじゃダメだなと今更気がついたので方針転換して自分で好きな様に実装してみる事にします。
ってことでアノテーションとReflection使って適当に実装してみました。
と、こんな感じで組める様になります。思った以上にすっきりするなぁ。
とりあえずjarのファイルを添付しようと思ったらできない、、、。なんでじゃ。ソースは調整して公開します。
それにしても今回初めてリフレクションとアノテーションの実装をしてみましたが、コード量少なくて簡単に実装できるもんんなんすねー。ちょっと感動しました。