Java 当我单击按钮并选择微调器上的项目时,应用程序会崩溃

Java 当我单击按钮并选择微调器上的项目时,应用程序会崩溃,java,android,eclipse,spinner,Java,Android,Eclipse,Spinner,我想根据微调器上选择的项目对按钮按下执行特定操作。 到目前为止,我得到的是: 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.setOnClickListen

我想根据微调器上选择的项目对按钮按下执行特定操作。 到目前为止,我得到的是:

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;
            }
        }
    });
}
当我编译应用程序并单击按钮时,应用程序崩溃并返回到主活动。无论我选择了哪个项目(0或1),应用程序仍然崩溃。有人能告诉我哪里出了问题吗

按钮的XML代码:

<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" />

您的方法名称是
submitButton
,但xml中的onClick方法是
onClick

将其更改为
submitButton
,您的问题就解决了

Xml应该是

<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 " />

只需删除这一行:

android:onClick="onClick"
在xml中。确保在不传入视图的情况下从onCreate调用submitButton,因为这是不需要的

您可以在代码中设置onclicklistener,就像您通过

b1.setOnClickListener

或者只是有一种方法,例如:

public-void方法{//这是一个方法,所以在这里做东西}

并在xml中设置它,如下所示

android:onClick=“方法”


在上面的示例中,将方法更改为submitButton是可行的

在xml中处理
onClick
时,实际上不需要“onClickListener”。感谢您为我澄清这一点,我是一个初学者,所以我没有真正理解它,但现在一切都很清楚。另一个答案让我的应用程序正常工作,所以我会接受它,但我会投票支持你的:)
android:onClick="onClick"