Guy
Guy

Reputation: 6522

App chrashes when I click button and select item on spinner

I want to do a certain action on button press according to which item on spinner is selected. This is what I've got so far:

public void submitButton (View v){
    Button b1 = (Button)findViewById(R.id.submitButton);
    final Spinner s1 = (Spinner)findViewById(R.id.spinner1);
    final Context context = this;

    b1.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            final int position = s1.getSelectedItemPosition();

            switch (position){
            case 0:
                AlertDialog.Builder spinnerErrorBuilder = new AlertDialog.Builder(context);
                spinnerErrorBuilder.setTitle("Warning");
                spinnerErrorBuilder.setMessage("Please choose an item from the list");
                spinnerErrorBuilder.setPositiveButton("OK", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int id) {
                        dialog.cancel();
                    }
                });
                AlertDialog spinnerError = spinnerErrorBuilder.create();
                spinnerError.show();
                break;
            case 1:
                break;
            }
        }
    });
}

When I compile my app and click the button, the app crashes and returns to main activity. It doesn't matter which item I have selected (0 or 1) the app still crashes. Could someone tell me where I went wrong?

XML code for the button:

<Button
    android:id="@+id/submitButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/editText1"
    android:layout_alignBottom="@+id/editText1"
    android:layout_alignLeft="@+id/checkBox25"
    android:text="@string/addMaterial"
    android:onClick="onClick" />

Logcat file:

06-22 15:00:13.455: E/AndroidRuntime(23409): java.lang.IllegalStateException: Could not find a method onClick(View) in the activity class com.example.gw2legendary.Bifrost for onClick handler on view class android.widget.Button with id 'submitButton'

Upvotes: 1

Views: 236

Answers (2)

AndroidPenguin
AndroidPenguin

Reputation: 3453

Simply delete this line:

android:onClick="onClick"

within your xml. Be sure to call submitButton from your onCreate without passing in a view as this is not needed.

You can either set an onclicklistener in code as you have done by

b1.setOnClickListener...

OR just have a method such as:

public void method { //This is a method so do stuff here }

And set it in your xml as follows

android:onClick="method"

In your above example changing method to submitButton would work.

Upvotes: 2

MDMalik
MDMalik

Reputation: 4001

Your method name is submitButton but your onClick method in xml is onClick

Change it to submitButton and your problem is solved

Xml Should be

<Button
android:id="@+id/submitButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/editText1"
android:layout_alignBottom="@+id/editText1"
android:layout_alignLeft="@+id/checkBox25"
android:text="@string/addMaterial"
android:onClick="submitButton " />

Upvotes: 0

Related Questions