前回のお話
前回は過去に6から8にアップグレードしたメモが出てきたので書きました。 今回は8にアップグレードした時にやったことを書きます
最初に
butterknife/CHANGELOG.md at master · JakeWharton/butterknife · GitHub
こちらをまず読む。
大きな変更点としては、@Bind
が@BindView
に変更になっています。
あとは、unbind
の部分。
build.gradleを修正
compile 'com.jakewharton:butterknife:8.0.1' apt 'com.jakewharton:butterknife-compiler:8.0.1'
置換
今回も置換コマンドを使ってやります
perl -pi -e "s/butterknife.Bind/butterknife.BindView/g" **/*.java perl -pi -e "s/\@Bind/\@BindView/g" **/*.java
importの部分の修正と、アノテーションの変更の部分
FragmentのonDestroyViewに入れている部分の対応
今までは以下のようにしていましたが、
ButterKnife.unbind(this);
http://jakewharton.github.io/butterknife/#reset
↑によると、以下のようにして対応する必要がありそうです。 これは手作業で直していくのがよさそうかな。。。
public class FancyFragment extends Fragment { @BindView(R.id.button1) Button button1; @BindView(R.id.button2) Button button2; private Unbinder mUnbinder; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fancy_fragment, container, false); mUnbinder = ButterKnife.bind(this, view); // TODO Use fields... return view; } @Override public void onDestroyView() { super.onDestroyView(); mUnbinder.unbind(); } }
おわり
という感じで終わりです。僕の作っているアプリではこれの修正で大丈夫そうでした。 さくっと出来るので、やれる時にやっとくのがよさそうです。