Kotlin移行4

目的

  • Javaで書かれたプロジェクトを少しずつKotlinで書き直す
  • TestもKotlin化
  • 備忘録的にちょこちょこ完了まで続ける

条件

  • AndroidStudio3.2.0
  • Java1.8.0_152
  • Kotlin 1.2.70
  • gradle 4.10.2

今回の作業予定内容

  • 某リリース済アプリにKotlin Android Extensionsを適用したい

前提

  • View、文字列リソースをButterknifeを使って実装している
  • FragmentにもKotlin Android Extensionsを適用する
    • FragmentはBaseとなるFragmentを継承して使用している

手順と具体的な作業

対象のFragmentクラスにonViewCreated追加

BaseHogeFragment.kt

HogeFragment.kt(BaseHogeFragment.ktを継承)

まとめ

Activityと同様にExtensionsを使おうとすると、起動時NullPointerExceptionとかでおちてしまうのでonViewCreatedで行う、という記事が多かったため実装してみるも、SupportLibrary27以降はルールが微妙にかわり、onViewCreatedの第1引数はView?ではなくViewでなければならなくなった。
また、継承先でしっかりsuperを呼ぶことを忘れてはならない(すっかりわすれてwebviewのloadが動いていなかった)

参考
https://qiita.com/toralipse/items/42b0ab9feb80f91af2e0
https://stackoverflow.com/questions/47016853/multiple-errors-in-my-fragments-after-updating-the-support-library-to-27-0-0