计算器不起作用



我的计算器有问题

我在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(...);
}
};
}
});

最新更新