android studioでアプリを作る(チュートリアルのアプリすら落ちてしまった話)
android studioでアプリを作ろうと、公式のチュートリアルをやったのですが、初学者にはハマるポイントが多いのか、一日かかってしまいました。備忘録として残します。はまったのは以下の3点。初歩的過ぎてチュートリアルのコードとにらめっこしていました。
作成するアプリは、テキストボックスにテキストを入れてボタンを押すと、画面遷移をした先でそのテキストを表示する、というものです。
1つ目:アプリがなぜか一瞬起動して落ちる
原因はテキストインプットを受け取るコードを、初期画面のコードに記述していたから。
出てきたエラーはこちら
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
at com.example.myapplication.MainActivity.onCreate(MainActivity.kt:18)
いわゆるヌルポなのですが、最初は全くわかりませんでした。(このエラーを出すのにも苦労しました。)
テキストを表示する領域につけられたIDを参照しているのですが、この領域は初期画面には出てきません。それなのに初期画面でその領域へアクセスしたのが問題でした。(遷移後の画面で使用しているIDだったため、コンパイル時にエラーは出ませんでした。あくまでもアクセスするときにヌルポするのですね…)
下にある、RUNを押すことでログを見ることができます。
ハマっていたポイントですが、
こんな感じで、画面ごとにコード本体が変わることになれていなく、途中でごちゃごちゃにしたのが敗因でした。
2つ目:初期画面が起動しない
原因はsetContentViewの引数が遷移後の画面の名前だったから。このメソッドは画面描画をつかさどっているので、引数を間違えるともちろん意図していない画面が描画されます。
3つ目:ボタンを押しても画面遷移しない
原因はstartActivity(intent)を記述していなかったから。コードの見落としでした。
アプリを作るのって、こんなに大変なのですね…。
最後に、成果物がこちら。(Buttonの名前を変えるのが面倒だったので雑です…)
この記事が気に入ったらサポートをしてみませんか?