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

时间:2013-06-22 12:56:35

标签: 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.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" />

Logcat文件:

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'

2 个答案:

答案 0 :(得分:2)

只需删除此行:

android:onClick="onClick"
你的xml中的

。一定要从onCreate调用submitButton而不传入视图,因为这不需要。

您可以像在

中一样在代码中设置onclicklistener
  

... b1.setOnClickListener

或者只是有一个方法,如:

  

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

并将其设置在xml中,如下所示

  

机器人:的onClick = “方法”

在上面的示例中,将submitButton更改方法可以正常工作。

答案 1 :(得分:0)

您的方法名称为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 " />