简单的onclick按钮在android中不起作用

时间:2014-06-18 18:51:24

标签: java android

我有以下代码段。我想要做的是当我点击button1时只显示文字。但是eclipse建议我添加onClick(DialogInterface dialog, int which)但是在btnOk.setOnClickListener(oclBtnOk);它会给我这个错误:

  

类型View中的方法setOnClickListener(View.OnClickListener)不适用于参数(DialogInterface.OnClickListener)

这是我的代码:

TextView tvOut;
    Button btnOk;
    Button btnCancel;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.container, new PlaceholderFragment())
                    .commit();
        }

        tvOut = (TextView) findViewById(R.id.textView1);
        btnOk = (Button) findViewById(R.id.button1);
        btnCancel = (Button) findViewById(R.id.button2);


     // create click listener
        OnClickListener oclBtnOk = new OnClickListener() {
          public void onClick(View v) {
            // change text of the TextView (tvOut)
            tvOut.setText("Button OK clicked");
          }

        @Override
        public void onClick(DialogInterface dialog, int which) {
            // TODO Auto-generated method stub

        }



        };
        // assign click listener to the OK button (btnOK)
        btnOk.setOnClickListener(oclBtnOk);
    }

2 个答案:

答案 0 :(得分:1)

您导入了错误的OnClickListener类。

View.setOnClickListener()采用View.OnClickListener,而不是DialogInterface.OnClickListener,这是您导入的内容。

如果使用此类别中的DialogInterface.OnClickListener,只需将导入语句更改为导入android.view.View.OnClickListener

如果您 也使用班级中的DialogInterface.OnClickListener界面,则需要在此处进一步限定班级名称,如下所示:

View.OnClickListener oclBtnOk = new View.OnClickListener() {
    public void onClick(View v) {
        // change text of the TextView (tvOut)
        tvOut.setText("Button OK clicked");
    }
}

您还应该删除onClick(DialogInterface dialog, int which)方法,因为该方法仅针对DialogInterface.OnClickListener定义。

答案 1 :(得分:0)

同样的问题: 类型View中的方法setOnClickListener(View.OnClickListener)不适用于参数(DialogInterface.OnClickListener)

calButton.setOnClickListener(添加点击);

来源:

import android.annotation.TargetApi;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Build;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;

@TargetApi(Build.VERSION_CODES.HONEYCOMB)
@SuppressWarnings("deprecation")
public class MainActivity extends ActionBarActivity {

LinearLayout layout1;
EditText no1Text,no2Text;
Button calButton;
TextView answerText;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    layout1=new LinearLayout(this);


    no1Text=new EditText(this);
    no2Text=new EditText(this);
    calButton=new Button(this);
    answerText=new TextView(this);

    answerText.setText("0");
    calButton.setText("Calculate");

    layout1.setOrientation(LinearLayout.VERTICAL);

    calButton.setOnClickListener(addClick);

    layout1.addView(no1Text);
    layout1.addView(no2Text);
    layout1.addView(calButton);
    layout1.addView(answerText);


    setContentView(layout1);
}


private OnClickListener addClick=new OnClickListener() 
{

    @Override
    public void onClick(DialogInterface dialog, int which) 
    {

        String firstStr=no1Text.getText().toString();
        String secondStr=no2Text.getText().toString();


        double firstNo=Double.parseDouble(firstStr);
        double secondNo=Double.parseDouble(secondStr);

        double sumNo=firstNo+secondNo;

        String sumStr=String.valueOf(sumNo);

        answerText.setText(sumStr);
    }
};
}