У меня проблемы с моим калькулятором
Я сделал это с Kotlin в AndroidStudio, и после того, как я закончил, он не работал, хотя макет очень хорош
Код
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
– это лямбда, которая запускается при нажатии кнопки. Итак, что вы делали до сих пор, создается новый экземпляр View.OnClickListener
каждый раз, когда нажимается одна из кнопок, вместо того, чтобы выполнять View.OnClickListener
действия.
В коде Java эквивалент этого будет примерно таким:
button_plus.setOnClickListener(new View.OnClickListener { @Override void onClick(View view) { new View.OnClickListener { @Override void onClick(View view) { result.setText(...); } }; } });