質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
NullPointerException

null値の参照型変数を参照しようとした場合に投げられる、Javaにおける例外のひとつです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

3回答

2306閲覧

setTextを使うとnullpointerexceptionとエラーが出ることについて

clond

総合スコア6

NullPointerException

null値の参照型変数を参照しようとした場合に投げられる、Javaにおける例外のひとつです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2019/07/26 05:03

編集2022/01/12 10:55

前提・実現したいこと

NullPointerExceptionエラーが出て困ってます><

発生している問題・エラーメッセージ

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.quizdb.QuizActivity.showNextQuestion(QuizActivity.java:88)

該当のソースコード

package com.example.quizdb;

import androidx.appcompat.app.AppCompatActivity;

import android.content.res.ColorStateList;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.Toast;

import java.util.Collections;
import java.util.List;

public class QuizActivity extends AppCompatActivity {
private TextView textViewQuestion;
private TextView textViewScore;
private TextView textViewQuestionCount;
private TextView textViewCountDown;
private RadioGroup rbGroup;
private RadioButton rb1;
private RadioButton rb2;
private RadioButton rb3;
private Button buttonConfirmNext;

private ColorStateList textColorDefaultRb; private List<Question> questionList; private int questionCounter; private int questionCountTotal; private Question currentQuestion; private int score; private boolean answered; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_quiz); textViewQuestion = findViewById(R.id.text_view_question); textViewScore = findViewById(R.id.text_view_score); textViewQuestionCount = findViewById(R.id.text_view_question_count); textViewCountDown = findViewById(R.id.text_view_countdown); rbGroup = findViewById(R.id.radio_group); rb1 = findViewById(R.id.radio_button1); rb2 = findViewById(R.id.radio_button2); rb3 = findViewById(R.id.radio_button3); buttonConfirmNext = findViewById(R.id.button_confirm_next); textColorDefaultRb = rb1.getTextColors(); QuizDbHelper dbHelper = new QuizDbHelper(this); questionList = dbHelper.getAllQuestions(); questionCountTotal = questionList.size(); Collections.shuffle(questionList); showNextQuestion(); buttonConfirmNext.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (!answered) { if (rb1.isChecked() || rb2.isChecked() || rb3.isChecked()) { checkAnswer(); } else { Toast.makeText(QuizActivity.this, "Please select an answer", Toast.LENGTH_SHORT).show(); } } else { showNextQuestion(); } } }); } private void showNextQuestion() { rb1.setTextColor(textColorDefaultRb); rb2.setTextColor(textColorDefaultRb); rb3.setTextColor(textColorDefaultRb); rbGroup.clearCheck(); if (questionCounter < questionCountTotal) { currentQuestion = questionList.get(questionCounter); textViewQuestion.setText(currentQuestion.getQuestion()); rb1.setText(currentQuestion.getOption1()); rb2.setText(currentQuestion.getOption2()); rb3.setText(currentQuestion.getOption3()); questionCounter++; textViewQuestionCount.setText("Question: " + questionCounter + "/" + questionCountTotal); answered = false; buttonConfirmNext.setText("Confirm"); } else { finishQuiz(); } } private void checkAnswer() { answered = true; RadioButton rbSelected = findViewById(rbGroup.getCheckedRadioButtonId()); int answerNr = rbGroup.indexOfChild(rbSelected) + 1; if (answerNr == currentQuestion.getAnswerNr()) { score++; textViewScore.setText("Score: " + score); } showSolution(); } private void showSolution() { rb1.setTextColor(Color.RED); rb2.setTextColor(Color.RED); rb3.setTextColor(Color.RED); switch (currentQuestion.getAnswerNr()) { case 1: rb1.setTextColor(Color.GREEN); textViewQuestion.setText("Answer 1 is correct"); break; case 2: rb2.setTextColor(Color.GREEN); textViewQuestion.setText("Answer 2 is correct"); break; case 3: rb3.setTextColor(Color.GREEN); textViewQuestion.setText("Answer 3 is correct"); break; } if (questionCounter < questionCountTotal) { buttonConfirmNext.setText("Next"); } else { buttonConfirmNext.setText("Finish"); } } private void finishQuiz() { finish(); }

}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

plain

1 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference

TextView#setTextメソッドがnull参照に対して実行されようとした、とあります。
つまりsetTextしているTextViewの中でnullになっているものがあるはずです。

plain

1 at com.example.quizdb.QuizActivity.showNextQuestion(QuizActivity.java:88)

88行目にあるTextViewがnullになっていないかチェックしてください。

投稿2019/07/26 17:21

swordone

総合スコア20649

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

引数側ではなく、setTextの持ち主がnullなんじゃないのかな
setTextでnull渡されてもNullPointerExceptionにはならなさそうだし

TextView.setText

投稿2019/07/26 06:43

Satsuki_2981

総合スコア37

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/07/26 06:54

引数が null でおちるなら 1段階ネストがさがってるよ(スタックトレース)
guest

0

currentQuestionがnullなのか
currentQuestion.getOption1()の返り値がnullなのか
currentQuestion.getOption2()の返り値がnullなのか
currentQuestion.getOption3()の返り値がnullなのか
のどれかなので、そこらへんしらべてみては。

投稿2019/07/26 05:22

y_waiwai

総合スコア87719

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問