解决Android Studio 中多个 View 的 setOnClickListener 添加方法(不能用this)

报错:
Android studio 使用 setOnClickListener()方法时无法使用单个view以外的多个view添加 setOnClickListener()的方法。

出现场景:
平时是一个按钮绑定一个事件,现在有多个按钮,需要添加多个事件,不想像单个view添加事件一样,在参数内重写View.OnClickListener下的onClik方法,会导致代码过于冗余,没有可读性。

环境:
Android 10.0

尝试:
首先是上C站看了几个高赞答案,其中最符合的是

Button btn = (Button) findViewById(R.id.mybutton);
Button btn2 = (Button) findViewById(R.id.mybutton2);
btn.setOnClickListener(listener);
btn2.setOnClickListener(listener);
View.OnClickListener listener = View.OnClickListener() {
   
        public void onClick(View v) {
   
            switch (v.getId()) {
   
               case R.id.mybutton: 
               //do something
               break;
               case R.id.mybutton2: 
               //do something
               break;
            }
    }

转自:

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的多位数运算计算器示例代码,使用 NumberClick 实现: ```java public class MainActivity extends AppCompatActivity implements View.OnClickListener { private EditText editText; private Button btnAdd, btnSub, btnMul, btnDiv, btnClear, btnEquals; private String operator; private double num1, num2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editText = findViewById(R.id.edit_text); btnAdd = findViewById(R.id.btn_add); btnSub = findViewById(R.id.btn_sub); btnMul = findViewById(R.id.btn_mul); btnDiv = findViewById(R.id.btn_div); btnClear = findViewById(R.id.btn_clear); btnEquals = findViewById(R.id.btn_equals); btnAdd.setOnClickListener(this); btnSub.setOnClickListener(this); btnMul.setOnClickListener(this); btnDiv.setOnClickListener(this); btnClear.setOnClickListener(this); btnEquals.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn_add: operator = "+"; num1 = Double.parseDouble(editText.getText().toString()); editText.setText(""); break; case R.id.btn_sub: operator = "-"; num1 = Double.parseDouble(editText.getText().toString()); editText.setText(""); break; case R.id.btn_mul: operator = "*"; num1 = Double.parseDouble(editText.getText().toString()); editText.setText(""); break; case R.id.btn_div: operator = "/"; num1 = Double.parseDouble(editText.getText().toString()); editText.setText(""); break; case R.id.btn_clear: editText.setText(""); break; case R.id.btn_equals: num2 = Double.parseDouble(editText.getText().toString()); double result = 0; if (operator.equals("+")) { result = num1 + num2; } else if (operator.equals("-")) { result = num1 - num2; } else if (operator.equals("*")) { result = num1 * num2; } else if (operator.equals("/")) { result = num1 / num2; } editText.setText(String.valueOf(result)); break; default: String number = ((Button) v).getText().toString(); editText.append(number); break; } } } ``` 在这个示例代码,我们使用了一个 `operator` 变量来保存当前的运算符,使用 `num1` 和 `num2` 变量来保存用户输入的数字,并在点击等号按钮时执行对应的运算操作,最后将结果显示在 EditText 。 需要注意的是,在进行运算操作之前,必须先获取用户输入的第一个数字,并将其保存在 `num1` 变量。在用户点击运算符按钮时,我们将当前的运算符保存在 `operator` 变量,并清空 EditText 的内容,以便用户输入下一个数字。在点击等号按钮时,我们获取用户输入的第二个数字,并根据当前的运算符执行对应的运算操作,将结果显示在 EditText 。 同时,我们还需要为数字按钮添加 OnClickListener,并在点击时将对应的数字追加到 EditText 。 希望这个示例代码能对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值