计算器不工作

我的计算器有问题

我在AndroidStudio中使用了Kotlin,在完成之后,虽然布局非常好,但没有工作

代码

override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_menu) val result=findViewById(R.id.textView) as TextView val button_plus=findViewById(R.id.button_plus) as Button val button_di=findViewById(R.id.button_di) as Button val button_mult=findViewById(R.id.button_mult) as Button val button_div=findViewById(R.id.button_div) as Button fun getNumber_1():Int{ val input_num1 = findViewById(R.id.edittext2) as EditText return Integer.parseInt(input_num1.text.toString()) } fun getNumber_2():Int{ val input_num2 = findViewById(R.id.edittext2) as EditText return Integer.parseInt(input_num2.text.toString()) } button_plus.setOnClickListener{View.OnClickListener { View -> result.text =(getNumber_1() + getNumber_2()).toString() }} button_di.setOnClickListener { View.OnClickListener { View -> result.text =(getNumber_1() - getNumber_2()).toString() }} button_mult.setOnClickListener { View.OnClickListener { View -> result.text =(getNumber_1() * getNumber_2()).toString() }} button_div.setOnClickListener { View.OnClickListener { View -> result.text =(getNumber_1() / getNumber_2()).toString() }} } 

谢谢

而不是这个

 button_plus.setOnClickListener{View.OnClickListener { View -> result.text =(getNumber_1() + getNumber_2()).toString() }} 

你应该做这个:

 button_plus.setOnClickListener { view -> result.text = (getNumber_1() + getNumber_2()).toString() } 

setOnClickListener之后打开的花括号是点击按钮时执行的lambda。 所以你到目前为止做的是每次点击一个按钮时创建一个新的View.OnClickListener实例,而不是执行你想要的操作。

在Java代码中,相当于这样的代码:

 button_plus.setOnClickListener(new View.OnClickListener { @Override void onClick(View view) { new View.OnClickListener { @Override void onClick(View view) { result.setText(...); } }; } });