setOnClickListener的问题-意外停止了应用程序

问题描述

| 我整天都在与错误\“应用程序意外停止。请重试。\”。此问题是由方法\“ setonClickListener \”引起的。我正在通过以下方式使用此组件:
public class main extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Button nnumb1 = ((Button)this.findViewById(R.id.numb1)); 
        nnumb1.setonClickListener((OnClickListener) this);

        Button nnumb2 = ((Button)this.findViewById(R.id.numb2)); 
        nnumb2.setonClickListener((OnClickListener) this);

    }

    public void onClickHandler(View v){
        setTitle(\"???\");
        String pressed = null;

        switch (v.getId()) {
            case R.id.nnumb1: 
                pressed=\"number one\";
             break;
            case R.id.nnumb2:
                pressed=\"number two\";
             break;
         }

        new AlertDialog.Builder(this).setTitle(\"Info\").setMessage(pressed).setNeutralButton(\"Okey\",null).show();       
        }
}
main.xml中按钮的ID称为\“ numb1 \”和\“ numb2 \”。 看起来问题是前5行中的一个-但我不知道如何解决...任何提示我都会很高兴... 谢谢!     

解决方法

问题似乎是这一行:
nnumb2.setOnClickListener((OnClickListener) this);
您正在将当前的Activity强制转换为OnClickListener,但未实现正确的接口,因此在运行时会给您带来异常。您必须在Activity中实现OnClickListener:
public class main extends Activity implements OnClickListener
然后,您可以像这样使用它:
numb2.setOnClickListener(this);
    ,您可能只想为每个按钮设置一个onClickListener,这通常就是我无论如何都要处理这些情况的方式。
Button nnumb1 = ((Button)this.findViewById(R.id.numb1));
nnumb1.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                //stuff to do if button1 is clicked
            }
        });
Button nnumb2 = ((Button)this.findViewById(R.id.numb2));
nnumb2.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                //stuff to do if button2 is clicked
            }
        });