有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java简单onclick按钮在安卓中不起作用

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

The method setOnClickListener(View.OnClickListener) in the type View is not applicable for the arguments (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) 个答案

  1. # 1 楼答案

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

    卡尔巴顿。setOnClickListener(addClick)

    资料来源:

    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);
        }
    };
    }
    
  2. # 2 楼答案

    您正在导入错误的OnClickListener

    ^{}采用View.OnClickListener,而不是DialogInterface.OnClickListener,这是您导入的内容

    如果没有在这个类的其他地方使用DialogInterface.OnClickListener,只需将import语句更改为import 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定义