计算器不起作用

时间:2017-08-05 22:20:30

标签: android kotlin calculator

我的计算器出了问题

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

并谢谢

1 个答案:

答案 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(...);
            }
        };

    }
});