スマホアプリ開発つまずきポイント:プリファレンスへのデータ保存~金宏和實「作ればわかる!Androidプログラミング」

  金宏和實著「作ればわかる!Androidプログラミング」で、スマーホアプリを勉強中です。最新版で対応していない部分について、修正方法を記します。
 今回は、第5章で発生した、プリファレンスデータ保存に関わる不具合です。

 ※使用環境:2021年12月時点(Android Studio Arctic Fox 2020.3.1 Patch 4)API31
20211220z5a981.jpg


★Kotlinバージョンアップで、プログラムが動かない!
スマホアプリの作成に挑戦中です。以下の書籍に沿って、学んでいます(購入時の記事は、→こちら)。
・金宏和實著:作ればわかる!Androidプログラミング・Kotlin対応~10の実践サンプルで学ぶAndroidアプリ開発入門、2019/6、翔泳社
20211209za01.jpg

 開発環境の導入から、プログラミング、実機への導入まで、ひととおりの手順が書かれていて、とても分かりやすく実用的な書籍です。ただ、残念なことに、一部のソースコードが、そのままでは動きません。2019年6月の発刊であり、現在までに開発言語「Kotlin(コトリン)」が何度もバージョンアップされていることが原因です。

 2021年12月時点の環境(Android Studio Arctic Fox 2020.3.1 Patch 4)で動作するように、修正をしながら試しています。解決した部分は、当ブログに書きます。同様のエラーでお困りの方に、お役に立てば幸いです。(勉強中の人が書いています。ご指摘などありましたら、ぜひコメントください。)


★第5章:プリファレンスへのデータ保存


◎使用環境
・開発環境:Android Studio Arctic Fox 2020.3.1 Patch 4 / API31 Platform
・実機:スマートフォン OPPO CPH2099

◎不具合発生箇所
・対象コード:第5章 p.150 リスト5.4 EditActivity.kt

◎発生状況
・自動importされた「PreferenceManager」に取り消し線が付く(下図)。
・本文の「PreferenceManager」にも、取り消し線が付く。

20211220z5a001.jpg

◎原因
・旧バージョンのPreference Managerが廃止された(deprecated)。

◎対策
 新バージョンのPreference Managerを、gradleで指定します。そのために、「build.gradle(Module:app)」の「dependencies」の中に、以下を追加します。(ハイライト表示で最新バージョンを促されたときは、最新バージョン番号に書き換えて下さい。)

implementation 'androidx.preference:preference-ktx:1.1.1'

20211220z5a002.jpg

 上の変更を行ったのち、gradleのSyncを実行します(上部に出たバーで「Sync Now」をクリック)。
 その後で、「EditActivity.kt」に戻ります。古いimport文「import android.preference.PreferenceManager」を削除します。すると、本文「val pref=PreferenceManager...」が赤文字で表示されます。ここで赤文字の上をクリックして「import」を選びます。すると、新たなimport文が自動追加されるはずです。これによって、本文の赤文字が解消されます。

import androidx.preference.PreferenceManager //自動追加される
...
val pref=PreferenceManager.getDefaultSharedPreferences(this)...

20211220z5a003.jpg

◎補足
 完全動作のためには、上に加えて、「Android-Kotlin拡張プラグイン」廃止対応として、「binding」を用いる修正が必要です。詳しい修正方法は、別記事(→こちら)を参照ください。使用するbindingの型は、以下のようになります。
 ・activity_main.xml → private lateinit var binding: ActivityMainBinding
 ・activity_edit.xml → private lateinit var binding: ActivityEditBinding


 これにて完動!
 20211220z5a981.jpg

Comments

Popular posts from this blog

Privacy Policy: LifePointer - a life counter for TCGs

Privacy Policy: Absolute FFT - visualize frequency of sounds

Privacy Policy: Head or Tail? - An App for Tossing Coins