0

Error

E/AndroidRuntime: FATAL EXCEPTION: main Process: com.nabarup.braintrainer, PID: 25662 java.lang.IllegalStateException: Could not execute method for android:onClick at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:402) at android.view.View.performClick(View.java:7161) at android.view.View.performClickInternal(View.java:7138) at android.view.View.access$3500(View.java:811) at android.view.View$PerformClick.run(View.java:27419) at android.os.Handler.handleCallback(Handler.java:883) at android.os.Handler.dispatchMessage(Handler.java:100) at android.os.Looper.loop(Looper.java:224) at android.app.ActivityThread.main(ActivityThread.java:7520) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950) Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Method.invoke(Native Method) at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:397) at android.view.View.performClick(View.java:7161)  at android.view.View.performClickInternal(View.java:7138)  at android.view.View.access$3500(View.java:811)  at android.view.View$PerformClick.run(View.java:27419)  at android.os.Handler.handleCallback(Handler.java:883)  at android.os.Handler.dispatchMessage(Handler.java:100)  at android.os.Looper.loop(Looper.java:224)  at android.app.ActivityThread.main(ActivityThread.java:7520)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950) 

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.nabarup.braintrainer.MainActivity.questionDisplayed(MainActivity.java:118) at com.nabarup.braintrainer.MainActivity.goActivity(MainActivity.java:52) at java.lang.reflect.Method.invoke(Native Method)  at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:397)  at android.view.View.performClick(View.java:7161)  at android.view.View.performClickInternal(View.java:7138)  at android.view.View.access$3500(View.java:811)  at android.view.View$PerformClick.run(View.java:27419)  at android.os.Handler.handleCallback(Handler.java:883)  at android.os.Handler.dispatchMessage(Handler.java:100)  at android.os.Looper.loop(Looper.java:224)  at android.app.ActivityThread.main(ActivityThread.java:7520)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)  I/up.braintraine: ProcessProfilingInfo new_methods=542 is saved saved_to_disk=1 resolve_classes_delay=8000

Code:

package com.nabarup.braintrainer;

import android.annotation.SuppressLint;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import java.util.Random;

public class MainActivity extends AppCompatActivity {

    private int totalQuestionsDisplayed = 0;
    private int totalCorrectAnswered = 0;
    private int sum = 0;
    private int displayTimer = 30;
    private Button goButton;
    private MediaPlayer mediaPlayer;
    private TextView answerBox1;
    private TextView answerBox2;
    private TextView answerBox3;
    private TextView answerBox4;
    private TextView screenTimer;
    private TextView scoredMarks;
    private TextView questionDisplayed;
    private Button playAgainButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.start_screen);
        goButton = findViewById(R.id.goButton);
        answerBox1 = findViewById(R.id.answerBox1);
        answerBox2 = findViewById(R.id.answerBox2);
        answerBox3 = findViewById(R.id.answerBox3);
        answerBox4 = findViewById(R.id.answerBox4);

        screenTimer = findViewById(R.id.screenTimer);
        scoredMarks = findViewById(R.id.scoredMarks);
        questionDisplayed = findViewById(R.id.questionDisplayer);
        playAgainButton = findViewById(R.id.playAgainButton);

    }




    public void goActivity(final View view) {
        setContentView(R.layout.activity_main);
        questionDisplayed();

        new CountDownTimer(30_100, 1_000) {

            @SuppressLint("SetTextI18n")
            @Override
            public void onTick(long millisUntilFinished) {
                displayTimer--;
                screenTimer.setText("0:" + displayTimer);
            }


            @SuppressLint("SetTextI18n")
            @Override
            public void onFinish() {
                screenTimer.setText("0:0");
                questionDisplayed.setText(totalCorrectAnswered + "/" + totalQuestionsDisplayed);
                playAgainButton.setVisibility(View.VISIBLE);

            }
        }.start();
    }

    @SuppressLint("SetTextI18n")
    public void chooseAnswer(View view) {
        TextView answerChosen = (TextView) view;
        String userAnswer = answerChosen.getTag().toString();

        if (userAnswer.equals("true")) {
            totalCorrectAnswered++;
            scoredMarks.setText(totalCorrectAnswered + "/" + totalQuestionsDisplayed);
        }
        else {
            Toast.makeText(this, " Wrong ! ", Toast.LENGTH_SHORT).show();
        }
        questionDisplayed();
    }

    public void playAgain(View view) {
        playAgainButton.setVisibility(View.INVISIBLE);
        displayTimer = 30;
        answerBox1.animate().alpha(1f);
        answerBox2.animate().alpha(1f);
        answerBox3.animate().alpha(1f);
        answerBox4.animate().alpha(1f);

        answerBox1.setClickable(true);
        answerBox2.setClickable(true);
        answerBox3.setClickable(true);
        answerBox4.setClickable(true);

        goButton.setEnabled(true);
        goButton.setVisibility(View.VISIBLE);

        totalCorrectAnswered = 0;
        totalQuestionsDisplayed = 0;
        sum = 0;
    }

    @SuppressLint("SetTextI18n")
    private void questionDisplayed() {
        totalQuestionsDisplayed++;
        Random random = new Random();
        int number1 = random.nextInt(20);
        int number2 = random.nextInt(20);
        sum = number1 + number2;
        questionDisplayed.setText(" "+number1 + "+" + number2 + "=");
        int Random = random.nextInt(4);

        if (Random == 0) {
            answerBox1.setText(String.valueOf(sum));
            answerBox2.setText(String.valueOf(random.nextInt(30)));
            answerBox3.setText(String.valueOf(random.nextInt(30)));
            answerBox4.setText(String.valueOf(random.nextInt(30)));

            answerBox1.setTag("true");
            answerBox2.setTag("false");
            answerBox3.setTag("false");
            answerBox4.setTag("false");
        }

        else if (Random == 1){
            answerBox2.setText(String.valueOf(sum));
            answerBox1.setText(String.valueOf(random.nextInt(30)));
            answerBox3.setText(String.valueOf(random.nextInt(30)));
            answerBox4.setText(String.valueOf(random.nextInt(30)));

            answerBox2.setTag("true");
            answerBox1.setTag("false");
            answerBox3.setTag("false");
            answerBox4.setTag("false");
        }

        else if (Random == 2) {
            answerBox3.setText(String.valueOf(sum));
            answerBox1.setText(String.valueOf(random.nextInt(30)));
            answerBox2.setText(String.valueOf(random.nextInt(30)));
            answerBox4.setText(String.valueOf(random.nextInt(30)));

            answerBox3.setTag("true");
            answerBox2.setTag("false");
            answerBox1.setTag("false");
            answerBox4.setTag("false");
        }

        else if (Random == 3) {
            answerBox4.setText(String.valueOf(sum));
            answerBox1.setText(String.valueOf(random.nextInt(30)));
            answerBox2.setText(String.valueOf(random.nextInt(30)));
            answerBox3.setText(String.valueOf(random.nextInt(30)));

            answerBox4.setTag("true");
            answerBox2.setTag("false");
            answerBox3.setTag("false");
            answerBox1.setTag("false");
        }
    }
}
Daniel Manta
  • 5,682
  • 13
  • 35
  • 38
  • 1
    consider reading something about "how to debug" – Berto99 Aug 08 '20 at 11:05
  • 1
    It would be helpful if you would tell which line this occurs in. Sidenote: You're breaking the Java naming convention with your `Random` variable. Variables should start with lowercase to make them visibly distinct from classes. – Scratte Aug 08 '20 at 11:22
  • `**Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference` – blackapps Aug 08 '20 at 11:32
  • Your textView is null... it is weird... but I think the error is the next: Your xml contains a TextView, it is ok, but your class extends from AppCompatActivity, so when you compile the project, your TextView internally is a AppCompatTextView, but you are using a TextView in your Activity. So, change your TextView in the Activity by AppCompatTextView (import androidx.appcompat.widget.AppCompatTextView ) – Manuel Mato Aug 08 '20 at 16:57
  • Sorry for the Random variable , actually before posting this , i made that change , i mean i was not using the randint function.. so i tried and unfortunately got thne same results... – Nabarup Ghosh Aug 09 '20 at 13:30

0 Answers0