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だったため、コンパイル時にエラーは出ませんでした。あくまでもアクセスするときにヌルポするのですね…)

画像2

下にある、RUNを押すことでログを見ることができます。

ハマっていたポイントですが、

画像1

こんな感じで、画面ごとにコード本体が変わることになれていなく、途中でごちゃごちゃにしたのが敗因でした。

2つ目:初期画面が起動しない
原因はsetContentViewの引数が遷移後の画面の名前だったから。このメソッドは画面描画をつかさどっているので、引数を間違えるともちろん意図していない画面が描画されます。

3つ目:ボタンを押しても画面遷移しない
原因はstartActivity(intent)を記述していなかったから。コードの見落としでした。

アプリを作るのって、こんなに大変なのですね…。

最後に、成果物がこちら。(Buttonの名前を変えるのが面倒だったので雑です…)

画像3

画像4


この記事が気に入ったらサポートをしてみませんか?