ButterKnife 7.0への移行ガイド

  • 68
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

引用: http://yslibrary.net/2015/06/29/how-to-migrate-to-butterknife-7/

ButterKnife 7.0への移行ガイド

2015/06/28、ButterKnifeの7.0.0がリリースされました。

6.x系からAPIの変更が何点かあるので、簡単に移行手順をまとめます

アノテーション

@InjectView/@InjectViews -> @Bind

Viewを変数にひもづけるアノテーションが、@Bindに変更になりました。

複数の場合も@Bindです。とりあえず全部置換しましょう。

@Optionalの廃止

レイアウトに存在しないかもしれないViewの時、今までは@Optionalを利用していましたが、7.0からは@Nullableを使います。support-annotationsライブラリの@Nullableでも、別のライブラリの@Nullableでも構わないようです。

メソッド名

下記のように変更になっています。

ButterKnife.inject -> ButterKnife.bind

ButterKnife.reset -> ButterKnife.unbind

余談ですが、Fragmentの場合はonDestroyViewButterKnife.unbindするようにしましょう。

Githubでソース見てると忘れてるものを偶に見かけます。

Proguard設定

ButterKnifeによって自動生成されるクラス名がFooActivity$$ViewInjectorからFooActivity$$ViewBinderに変更されたので、Proguard設定も変える必要があります。

下記のようになります。

-keep class butterknife.** { *; }
-dontwarn butterknife.internal.**
-keep class **$$ViewBinder { *; }

-keepclasseswithmembernames class * {
    @butterknife.* <fields>;
}

-keepclasseswithmembernames class * {
    @butterknife.* <methods>;
}

新しく追加された機能

Resource Binding

stringやbool, color等のxmlに定義されたリソースを変数にバインド出来るようになりました。

下記のアノテーションを使います。

  • @BindBool: R.boolbooleanにバインド
  • @BindColor: R.colorint/ClorStateListにバインド
  • @BindDimen: R.dimenint(ピクセルサイズ)あるいはfloat(正確な数値)にバインド
  • @BindDrawable: R.drawableDrawableにバインド
  • @BindInt: R.intintにバインド
  • @BindString: R.stringStringにバインド

こちらからは以上です。

参考: butterknife/CHANGELOG.md at master · JakeWharton/butterknife