スマホアプリつまずきポイント:Kotlin拡張プラグイン/Binding~金宏和實「作ればわかる!Androidプログラミング」
金宏和和實「作ればわかる!Androidプログラミング」で、スマーホアプリを勉強中です。最新版で対応していない部分について、修正方法を記します。
今回は、第2章「MainActivity.kt」の編集で発生した、変数名エラーです。
★Kotlinバージョンアップで、プログラムが動かない!
スマホアプリの作成に挑戦中です。以下の書籍に沿って、学んでいます。
・金宏和實著:作ればわかる!Androidプログラミング・Kotlin対応~10の実践サンプルで学ぶAndroidアプリ開発入門、2019/6、翔泳社
開発環境の導入から、プログラミング、実機への導入まで、ひととおりの手順が書かれていて、とても分かりやすく実用的な書籍です。ただ、残念なことに、一部のソースコードが、そのままでは動きません。2019年6月の発刊であり、現在までに開発言語「Kotlin(コトリン)」が何度もバージョンアップされていることが原因です。
2021年12月時点の環境(Android
Studio Arctic Fox 2020.3.1 Patch
4)で動作するように、修正をしながら試しています。解決した部分は、当ブログに書きます。同様のエラーでお困りの方に、お役に立てば幸いです。(勉強中の人が書いています。ご指摘などありましたら、ぜひコメントください。)
★第2章:「Kotlin拡張プラグイン」の廃止
◎不具合発生箇所
・対象コード:第2章 p.57 リスト2.5 MainActivity.kt
◎発生状況
ビューの名称(ID名)「morningBtn」「greetingText」などが、エディタ上でエラー表示(赤字)になる。カーソルを当てると、ヒントに「Unresolved reference」と表示される(下図)。
テキストに記載されている(自動入力されるという)「Kotlin Android拡張プラグイン」を手動で記載してみた。しかし、これもエラー表示になる(下図)。
◎原因
旧バージョン(書籍の時点)では、「Kotlin Android拡張プラグイン」というものがあり、ビューの変数の前に何もつけずに処理ができることになっていました(書籍p.58の記載)。しかし、このプラグインが、最新バージョンでは廃止されているようです。
最新バージョンでは、 「Binding(バインディング)」という方法で、ビューの参照を行うことになります。その方法を、以下に書きます。
◎対策
以下2つのファイルを修正します。
1)build.gradle(Module: xxxx.app)
2)MainActivity.kt
1)Gradleファイルの修正
まず1)は、「Gradle(グレードル)」という、ビルダー(必要な要素を集めて、アプリを構成してくれるソフト)の設定ファイルです(推定)。左のファイル一覧から、「Gradle
Scripts」を開いて、選びます。「build.Gradle」は2つありますが、薄い字で「Module:xxxx.app」と書いてあるほうを選びます(下図)。
ファイルを開いたら、「android」の中に、「viewBinding」の記載を追加します。下図では、「kotlinOptions」の下に記しました。
ここで追加したのは、以下の内容です。
viewBinding{ enabled=true } |
編集すると、画面上方に「Gradleファイルが変更された」旨のバーが出ます。右にある「Sync Now」をクリックします。処理が終わるまで、しばらくかかります。

2)Kotlinファイルの修正
次に2)は、下図のように修正します。

追加・修正したのは、以下の赤字部分です。「setContentView...」の部分は、もともとあった内容を書き換えています。ビューを参照するための「binding」を定義して、以降は「binding」の要素として、各変数を参照すればよい、ということです。
private lateinit var binding: ActivityMainBinding override fun.... super... binding=ActivityMainBinding.inflate(layoutInflater) val view1=binding.root setContentView(view1) binding.morningBtn... binding.greetingText.... } binding.afternoonBtn... binding.greetingText.... } binding.eveningBtn... binding.greetingText.... } |
まだ、このままだと、「ActivityMainBinding」がエラー表示(赤字)です。マウスを近づけてヒントを出したら、「Import」をクリックします(下図)。

これで、必要なファイルの「import」が自動設定されました(下図)。エラー解消です!

◎注意事項
なお、今回は「binding」の型を「ActivityMainBinding」として宣言しました。しかしこの型名は、アクティビティを記述したXMLファイルのファイル名によって変わります。例えば、書籍4章で登場する「activity_edit.xml」を参照する場合は、「ActivityEditBinding」とする必要があります。
これにて完動!

Comments
Post a Comment