【Android Studio】Unresolved reference:ActivityMainBinding でviewBindingできない問題

最近、Android Studioでアプリ開発のお勉強を始めた者です。
最初は、Android Studio公式チュートリアルをチャプター3ぐらいまで進めてみましたが、英語の説明を日本語に翻訳しながら進めていたもので、なかなかスンナリ頭に入ってこない&めんどくさくなってしまいました。
少々の息抜きということで、Android Studioに用意されているテンプレートプロジェクトのソースコードを読みながら、実装を学んでいる最中でございます。
そんなテンプレートプロジェクト内に、気になる実装を発見。チュートリアルでは、xmlのviewに存在するTwxtViewなどのコンポーネント?を.ktで呼び出す際に、idを指定して呼び出していましたが、viewBindingを使用することで、findViewしなくていい!!というのです。便利そう!ということで、試してみました。
序盤のチュートリアルで記載されていた呼び出し方(findViewById)
## activity_main.xml
android:id="@+id/result_text"
## MainActivity.kt
val resultText: TextView = findViewById(R.id.result_text)
ただ、これだとidの数だけfindしないといけないの面倒だな~。
viewBindingを使用した呼び出し方
## build.gradle
plugins {
...
id 'kotlin-kapt'
}
android {
...
buildFeatures {
viewBinding = true
}
}
### buid.gradleを書き換えたら、一旦syncしておきます。
## activity_main.xml
android:id="@+id/text_view"
## MainActivity.kt
import com.example.bindingtest.databinding.ActivityMainBinding
ここまで書いたら、「Build -> Clean Project」「Build -> Rebuild Project」で更新しておきます。そうすると、importのdatabindingが赤くなくなります。しっかり生成されたってことかな??
## MainActivity.kt
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
val view = binding.root
setContentView(view)
val str = "binding success !!!"
binding.textView.text = str
}
}
あとはこんな感じで、呼び出すだけで、findViewByIdと同様に使うことができるっぽいです。
参考
- ビュー バインディング(developer.android.com)
- Databindingを利用したアプリをビルドするとUnresolved reference: BR エラーになった(そうきたか)
- Unresolved reference:ActivityMainBinding(stackoverflow)
developerに記載されているbuild.gradleの方法だと、bindingできませんでした。ktでの呼び出しは問題なかったです。