09Emi
09Emi

Reputation: 25

Why is my program crashing when i click on the button?

I am doing my coursework for computing and every time i try and run my app and go onto this activity it crashes and says unfortunately activity has stopped. If i delete the last part of the code from the line (-----) down, the activity appears and works. But with it, it doesn't work. Does anyone know why this is the case and how i could fix it.

    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.ArrayAdapter;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.LinearLayout;
    import android.widget.Spinner;
    import android.widget.TextView;

    public class BedroomDoorSigns extends AppCompatActivity {
        private String[] wood;
        private Spinner spinner;
        private String[] colour;
        private String[] size;
        private Button mButton;
        private LinearLayout mLayout;
        private EditText mEditText;


        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.content_bedroom_door_signs);

            wood = getResources().getStringArray(R.array.wood_list);
            spinner = (Spinner) findViewById(R.id.wood_spinner);
            colour = getResources().getStringArray(R.array.colour_list);
            spinner = (Spinner) findViewById(R.id.colour_spinner);
            size = getResources().getStringArray(R.array.size_list);
            spinner = (Spinner) findViewById(R.id.size_spinner);
            Button Buttons = (Button) findViewById(R.id.Cart);
            mLayout = (LinearLayout) findViewById(R.id.linearLayout);
            mEditText = (EditText) findViewById(R.id.editText);
            mButton = (Button) findViewById(R.id.button);
            mButton.setOnClickListener(onClick());
            TextView textView = new TextView(this);
            textView.setText("New text");


            ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, wood);
            dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            spinner.setAdapter(dataAdapter);

            ArrayAdapter<String> dataAdapter2 = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, colour);
            dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            spinner.setAdapter(dataAdapter2);

            ArrayAdapter<String> dataAdapter3 = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, size);
            dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            spinner.setAdapter(dataAdapter3);

        }

public View.OnClickListener onClick() {
        return new View.OnClickListener() {


            public void onClick(View v) {
                mLayout.addView(createNewTextView(mEditText.getText().toString()));
            }
        };
    }

    public TextView createNewTextView(String text) {
        final ViewGroup.LayoutParams lparams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        final TextView textView = new TextView(this);
        textView.setLayoutParams(lparams);
        textView.setText("BASKET: " + text);
        return textView;
    }
}

Thank you

Upvotes: 0

Views: 96

Answers (2)

sandip
sandip

Reputation: 81

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference at com.example.emily.activity414timber.BedroomDoorSigns.onCreate(BedroomDoorSigns.java:41) at

your button object (mButton) is null and so it is throwing 'nullpointerexception' when you call 'setOnclickListner' method on that object

Upvotes: 0

Shabbir Dhangot
Shabbir Dhangot

Reputation: 9131

try like this

mButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mLayout.addView(createNewTextView(mEditText.getText().toString()));
        }
    });

Upvotes: 2

Related Questions