0

I tried a number of things but my Application keeps Crashing.

I tried debugging it is returned this error when I run the application.

java.lang.NullPointerException: Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference

package com.zybooks.pigdice;


import androidx.appcompat.app.AppCompatActivity;

import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    final Context context = this;
    //private EditText playerName;
    private String name;
    private int target_score_display;
    //public TextView player_name;
    private  EditText targetScore;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //player_name = findViewById(R.id.player_name);
        targetScore = dialog.findViewById(R.id.enter_target_score);
        //playerName = findViewById(R.id.enter_player_name);



        Button start_game = findViewById(R.id.start_game);
        start_game.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // custom dialog
                final Dialog dialog = new Dialog(context);
                dialog.setContentView(R.layout.dialogbox);
                dialog.setTitle("Title...");
                Button dialogButton = dialog.findViewById(R.id.start_game_dialog);
                // if button is clicked, close the custom dialog
                dialogButton.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {

                        try{
                            String value = targetScore.getText().toString();
                            target_score_display = Integer.parseInt(targetScore.getText().toString());
                            Intent intent = new Intent(getApplicationContext(),Gameplay.class);
                            intent.putExtra("TARGET_SCORE",target_score_display);
                            Bundle bundle = new Bundle();
                            bundle.putString("TARGET_SCORE",value);
                            intent.putExtras(bundle);
                            startActivity(intent);
                        } catch(NumberFormatException nfe) {
                            System.out.println("Could not parse " + nfe);
                        }
                    }
                });
                dialog.show();
            }
        });
    }
}

Trying to pass input taken in the dialog box to the next Activity. Have been struggling with this for over 3 hours.

1 Answers1

2

You can only call dialog.findViewById after the dialog is created (inside the onClick). It has no content when the Activity is created, so you can't find its views. For example, dialogButton is gotten correctly

So when you try to get the text from the non existing view, it will throw the exception

OneCricketeer
  • 126,858
  • 14
  • 92
  • 185