我的计算器出了问题
我在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()
}}
}
并谢谢
答案 0 :(得分:1)
而不是这个
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(...);
}
};
}
});