【问题标题】:App chrashes when I click button and select item on spinner当我单击按钮并选择微调器上的项目时,应用程序崩溃
【发布时间】:2013-06-22 21:07:17
【问题描述】:

我想根据选择了微调器上的哪个项目对按钮按下执行某个操作。 这是我到目前为止所得到的:

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'

【问题讨论】:

  • 在 xml 中处理 onClick 时实际上不需要“onClickListener”。

标签: java android eclipse spinner


【解决方案1】:

只需删除这一行:

android:onClick="onClick"

在您的 xml 中。请务必从您的 onCreate 调用 submitButton 而不要传入视图,因为这不是必需的。

您可以像在代码中那样设置 onclicklistener

b1.setOnClickListener...

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

public void method { //这是一个方法,所以在这里做点什么 }

并在你的xml中设置如下

android:onClick="方法"

在您上面的示例中,将方法更改为 submitButton 会起作用。

【讨论】:

  • 感谢您为我解惑,我是初学者,所以我并没有真正理解它,但现在一切都像天空一样清晰。另一个答案让我的应用程序正常工作,所以我会接受它,但我会支持你的:)
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-02
    • 1970-01-01
    • 1970-01-01
    • 2017-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多