如何将+/-function添加到kotlin android中的对接

我需要添加具有+/-function的新按钮。 如果用户第一次点击该按钮,则应该返回值 – >“ – ”(例如=> -123),如果用户再次单击该值,则应该删除( – > 123)。 计算器中的function类似于+/-按钮。

这是我的代码

Activity.kt文件

package com.tripbegins.calculator import android.support.v7.app.AppCompatActivity import android.os.Bundle import android.view.View import android.widget.Button import com.tripbegins.calculator.R.id.* import kotlinx.android.synthetic.main.activity_main.* class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) } var emptyText = true fun numberEvents(view: View) { var checkButton:Boolean = false if(emptyText){ viewResult.setText("") } emptyText = false var button = view as Button var isClicked = viewResult.text.toString() when (button.id) { buttonOne.id -> isClicked += "1" buttonTwo.id -> isClicked += "2" buttonThree.id -> isClicked += "3" dotButton.id-> isClicked+="." } viewResult.setText(isClicked) } var operation ="+" var oldValues:String? = null fun mathOperation(view: View){ var mathButton = view as Button var isClicked = viewResult.text.toString() when(mathButton.id){ plusButton.id-> { operation = "+" } minusButton.id->{ operation="-" } mulButton.id->{ operation="*" } } oldValues = viewResult.text.toString() emptyText = true } fun Calculate(view: View){ var newValues = viewResult.text.toString() var calulateButton:Double? = null when(operation){ "+"-> { calulateButton = oldValues!!.toDouble() + newValues.toDouble() } "-"-> { calulateButton = oldValues!!.toDouble() - newValues.toDouble() } "*"-> { calulateButton = oldValues!!.toDouble() * newValues.toDouble() } } viewResult.setText(calulateButton.toString()) emptyText=true } fun clearFunction(view: View){ viewResult.setText("") } } 

activity.xml文件

    

更新的Activity.kt文件我已经更新了= / – 的代码。 在函数外部添加了var

  var emptyText = true var isMinusPrinted=false fun numberEvents(view: View) **Current result** If button clicked for the first time value => -123 If button clicked for the second time value => -123 If button clicked for the third time value => --123 **Expected Result** If button clicked for the first time value => -123 If button clicked for the second time value => 123 If button clicked for the third time value => -123 

更新了activity.kt文件

 package com.tripbegins.calculator import android.support.v7.app.AppCompatActivity import android.os.Bundle import android.view.View import android.widget.Button import com.tripbegins.calculator.R.id.* import kotlinx.android.synthetic.main.activity_main.* import kotlinx.android.synthetic.main.activity_main.view.* class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) } var emptyText = true var isMinusPrinted=false fun numberEvents(view: View) { if(emptyText){ viewResult.setText("") } emptyText = false var button = view as Button var plusMinusCheck ="" var isClicked = viewResult.text.toString() when (button.id) { buttonOne.id -> isClicked += "1" buttonTwo.id -> isClicked += "2" buttonThree.id -> isClicked += "3" dotButton.id -> { isClicked += "." dotButton.isClickable = false //**add this line here** } plusMinusBtn.id->{ var resultWithoutMinus=isClicked//ex: 123 if(!isMinusPrinted){ isClicked = "-" + resultWithoutMinus//this line for example give result like: -123 isMinusPrinted=true } else{ isClicked=resultWithoutMinus //result became : 123 isMinusPrinted=false } } } viewResult.setText(isClicked) } var operation ="+" var oldValues:String? = null fun mathOperation(view: View){ var mathButton = view as Button var isClicked = viewResult.text.toString() when(mathButton.id){ plusButton.id-> { operation = "+" } minusButton.id->{ operation="-" } mulButton.id->{ operation="*" } } oldValues = viewResult.text.toString() emptyText = true dotButton.isClickable=true//**add this line here** } fun Calculate(view: View){ var newValues = viewResult.text.toString() var calulateButton:Double? = null when(operation){ "+"-> { calulateButton = oldValues!!.toDouble() + newValues.toDouble() } "-"-> { calulateButton = oldValues!!.toDouble() - newValues.toDouble() } "*"-> { calulateButton = oldValues!!.toDouble() * newValues.toDouble() } } viewResult.setText(calulateButton.toString()) emptyText=true dotButton.isClickable=true //**add this line here** } fun clearFunction(view: View){ viewResult.setText("") dotButton.isClickable=true //**add this line here** } } 

更新了按钮的xml文件 – > +/-

 

编辑

  var emptyText = true var isMinusPrinted=false//add this line here fun numberEvents(view: View) { var checkButton:Boolean = false if(emptyText){ viewResult.setText("") } emptyText = false var button = view as Button var isClicked = viewResult.text.toString() when (button.id) { buttonOne.id -> isClicked += "1" buttonTwo.id -> isClicked += "2" buttonThree.id -> isClicked += "3" dotButton.id-> isClicked+="." plusMinusBtn.id->{//add this block of code from here var resultWithoutMinus=Math.abs(isClicked.toInt()) //ex: 123 if(!isMinusPrinted){ isClicked = "-" + resultWithoutMinus//this line for example give result like: -123 isMinusPrinted=true } else{ isClicked=resultWithoutMinus //result became : 123 isMinusPrinted=false } }//to here } viewResult.setText(isClicked) }