以前の記事で、Androidアプリ開発初心者の私が、初めて買った本【はじめてのAndroidプログラミング(Kotlin対応)】について説明した。
今回の記事は、この本を使用していて私自身がつまづいたポイントを解説するというマニアックな内容となっている。
もし奇跡的に同じ場所でつまづいている方がいれば、参考になるかもしれない。
まずお伝えしたいのは、この本に書かれているソースコードには誤りはなく、そのまま書けば動くということだ。なので、この本を使用している人は安心してほしい。
私がつまづいたのはあくまで、スマホ固有の問題とソースコードの見落としに関するものだった。順番に説明しようと思う。
1. つまづきポイント① Chapter 10 カメラアプリを作ろうのresult Codeが想定と違う
カメラで画像を取得して画面に表示するアプリなのだが、始めは動かなくて原因を探るのに時間がかかってしまった。
原因をいろいろ調べてやっと理由が判明した。
カメラがちゃんと画像を取得できたか判定する部分で、resultCodeで判定するのだが、本では値が1を想定しているのが、私が使用している格安スマホ(Huawei nova lite3)では、なぜか値が-1で出力されていた。
機種によってこの値が変わるのか?ネットで調べても理由はわからなかったが、いずれにしても-1で判定させるとうまく動いた。
2. つまづきポイント② Chapter 11 スケジューラアプリを作ろうのコードに潜む空白に気づかない
p337で以下のような、アプリ画面で入力した値を後ほど定義するtoDateという拡張関数でDate型に変換するというもの。
val date = "${binding.dateEdit.text} ${binding.timeEdit.text}".toDate()
これを見て二個目の$の間に空白があるのがわかるだろうか?私はこれに気付かずエラーに悩まされた。のちほど定義する”yyyy/mm/dd HH:mm”の間にある空白と合わせて書かないとうまくデータを取り込めない。
教訓としては” “内の空白に気を付けて関数定義と合わせないとエラーがでますよ。というところだろうか。
3.まとめ
本記事では、アプリ開発初心者の私が 初めて買った本【はじめてのAndroidプログラミング(Kotlin対応)】 で、解決するのに時間がかかってしまった部分を2つほどご紹介した。
あくまでも、 【はじめてのAndroidプログラミング(Kotlin対応)】に書かれているソースコードに書かれているコードに誤りはなく、ちゃんと打ち込めばアプリは動く。
今回のケースは、スマホ機種のクセとコードの空白の認識が欠如した初心者ならではのつまづきなのだと思う。
奇跡的に同じところでつまづいた方、これから勉強される方の参考になれば幸いである。
コメント