Open6

「作って学ぶ Androidアプリ開発」で躓きメモ

ppgmppgm

Android Studioのテンプレートが書籍内と実機で違うため、躓く箇所がいくつかあったのでメモしていく

ppgmppgm

始めに選ぶテンプレートが「Empty Activity」とあるが、2023/10/08現在同名のテンプレートを選ぶとbuild.gradelファイルはbuild.gradle.ktsとなっておりKotlin Scriptで書くようになっている。

せっかくなのでkts形式で書いていく。
変換は適宜ドキュメント読んで理解しながらChatGPTくんに放り込んでいく。

ppgmppgm

Chap6
ツールバーの表示
明示されていないが、AndroidManifest.xmlのapplicationタグのtheme属性を下記のようにすると表示される。

        android:theme="@style/Theme.AppCompat.Light"
ppgmppgm

Chap6
Parcelableインターフェースの自動実装Parcelizeアノテーションはプラグインとして読み込む必要あり。

plugins {
    id("kotlin-parcelize")
}
ppgmppgm

Chap7
スタイルの変更箇所がstyle.xmlからtheme.xmlに変更になっている。

ppgmppgm

Chap8

Non-NullableなMutableLiveData<ArrayList<Toot>>にnullableなtootListSnapshotを入れようとしてエラーが出るのでnullチェックしnon-nullable assertを入れる。

nullチェックしてもnon-nullable assert入れないとエラーでちゃうのね…。

    val tootList = MutableLiveData<ArrayList<Toot>>()

...

    fun delete(toot: Toot){
        coroutineScope.launch {
            tootRepository.delete(toot.id)

            if (tootList == null) return@launch // new

            val tootListSnapshot = tootList.value
            tootListSnapshot?.remove(toot)
            tootList.postValue(tootListSnapshot!!) // add non-nullable assert
        }
    }