JSR 269の勉強がてらFragment生成と引数周りを楽にするfragment-creatorというライブラリを作った
aptしてますか。 正確にはPluggable Annotation Processing API(JSR 269)なので以降はJSR 269と書きます。
Dagger2やRealmなどJSR 269でコード生成を行っているライブラリ群の理解を深め、あわよくばcontributionするためJSR 269を勉強しつつチョットしたライブラリを作りることにしました。
完成したものが以下。
sys1yagi/fragment-creator - Java - GitHub
FragmentのnewInstanceメソッドとArgumentsの取扱いにまつわる部分を生成するライブラリです。
使い方
使い方はREADME.mdを見てもらえばわかるとは思いますが一応簡単に書いておきます。
以下のようにFragmentにアノテーションを付与するとMainFragmentCreator
というクラスが生成されます。
@FragmentCreator public class MainFragment extends Fragment { @Args String keyword; @Args(require = false) String userId; }
あとは使うだけ。
※0.6.0以降ではBuilder周りの使い方が変わっています。fragment-creator 0.6.0 releasedを参照してください。
MainFragment fragment = MainFragmentCreator.Builder .newInstance("keyword") // requiredな値はここで渡す .setUserId("userId") // optionalな値はsetterで渡す .build();
FragmentのonCreate()
でArgumentsの読み込みを行います。
@Args String keyword; @Args(require = false) String userId; @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); MainFragmentCreator.read(this); //keyword, userIdが初期化される }
らくちんだ。
参考にしたもの
- Androidでaptのライブラリを作るときの高速道路 - Qiita
- rejasupotaro/kvs-schema - Java - GitHub
- realm/realm-java: Realm is a mobile databas... - GitHub
- gfx/Android-Orma · GitHub
- google/dagger: A fast dependency injector for Android and Java.
今後
とりあえず使えるようにはなったもののまだ機能が足りないのでvalidatorとかconverterとか設定できるようにしようかなと思います。あとKotlin化してkaptでハマった上で修正をKotlinに出せたらいいかなとか。