Kotlin Android ExtensionsにてUnresolved referenceと言われてしまう対策法
最近GoogleI/Oでkotlinを正式サポートということでこのビッグウェーブに乗ろうとしています。
その際に表題の件に関してわりと古い形でやり方が広まっていたっぽいのでその修正な記事。
解決策をさっさと知りたい方は下の方見ちゃって下さい。
症状
Kotlin Android Extensionsの導入方法について以下をbuild.gradleに追加するだけとよく見かける
1 2 3 4 5 6 7 8 |
apply plugin: 'kotlin-android-extensions' buildscript { ext.kotlin_version = '1.1.2-4' dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version" } } |
それで以下のように試しにインポートをして見るわけだが
1 |
import kotlinx.android.synthetic.activity_title.* |
Unresolved reference: activity_title
activity_tiltleなんかしらんといわれる。
こまった。
いろいろ調べてみた
build.gradleの指定がわるいのかなぁと思い
とかをみると
You need to move the kotlin buildscript section from your project
build.grade
to your modulebuild.gradle
file.
ほう。
かく場所が違うのかな。とかおおもおい、appのほうのbuild.gradleにapply pluginだとかdependenciesをうつしてみてやってみるがやはりだめ。
対策
結果、公式のKotlin Android Extensionsをみると、
Importing synthetic properties
It is convenient to import all widget properties for a specific layout in one go:
import kotlinx.android.synthetic.main.<layout>.*
Thus if the layout filename isactivity_main.xml
, we’d importkotlinx.android.synthetic.main.activity_main.*
.
・・・・ん?!微妙にパスがちがくね!?
mainついてね?!
ということで以下に修正したら無事インポートできた。
1 |
import kotlinx.android.synthetic.main.activity_title.* |
まとめ
マニュアルはちゃんと見よう!