在Android Studio(Kotlin)中设置增量和减量的限制
因此,我在一个页面应用程序上有两组递增和递减按钮。我想将递减设置为0,递增设置为10。我尝试了许多不同的“if”语句,一个与decrease_1.setOnClickListener结合,另一个与fun increaseInteger1()结合,但都不起作用。我做错了什么在Android Studio(Kotlin)中设置增量和减量的限制,android,kotlin,increment,decrement,Android,Kotlin,Increment,Decrement,因此,我在一个页面应用程序上有两组递增和递减按钮。我想将递减设置为0,递增设置为10。我尝试了许多不同的“if”语句,一个与decrease_1.setOnClickListener结合,另一个与fun increaseInteger1()结合,但都不起作用。我做错了什么 class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCrea
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
increase_1.setOnClickListener { increaseInteger1() }
decrease_1.setOnClickListener { decreaseInteger1()
if(integer_number_1.text.length < 0) {
integer_number_1.text.length === 0
}
}
increase_2.setOnClickListener { increaseInteger2() }
decrease_2.setOnClickListener { decreaseInteger2() }
}
fun increaseInteger1() {
display_number_1(integer_number_1.text.toString().toInt() + 1)
/*val stringNumber = integer_number_1.text.toString()
val intNumber = stringNumber.toInt()
val increasedNumber = intNumber + 1
if(increasedNumber < 0) { display_number_1(0) }
else if (increasedNumber > 10) {display_number_1(10)} }*/
}
fun decreaseInteger1() {
display_number_1(integer_number_1.text.toString().toInt() - 1)
}
fun increaseInteger2() {
display_number_2(integer_number_2.text.toString().toInt() + 1)
}
fun decreaseInteger2() {
display_number_2(integer_number_2.text.toString().toInt() - 1)
}
private fun display_number_1(number: Int) {
integer_number_1.setText("$number")
}
private fun display_number_2(number: Int) {
integer_number_2.setText("$number")
}
}
class MainActivity:AppCompatActivity(){
重写创建时的乐趣(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
增加_1.setOnClickListener{increaseInteger1()}
Decrease1.setOnClickListener{decreaseInteger1()
if(整数\数字\ 1.text.length<0){
整数\u编号\u 1.text.length==0
}
}
增加_2.setOnClickListener{increaseInteger2()}
decrease_2.setOnClickListener{decreaseInteger2()}
}
乐趣递增整数1(){
显示数字1(整数数字1.text.toString().toInt()+1)
/*val stringNumber=integer\u number\u 1.text.toString()
val intNumber=stringNumber.toInt()
val increasedNumber=intNumber+1
if(increasedNumber<0){display_number_1(0)}
else如果(increasedNumber>10){display_number_1(10)}*/
}
乐趣递减整数1(){
显示\u编号\u 1(整数\u编号\u 1.text.toString().toInt()-1)
}
乐趣递增整数2(){
显示\u编号\u 2(整数\u编号\u 2.text.toString().toInt()+1)
}
fun decreaseInteger2(){
显示\u编号\u 2(整数\u编号\u 2.text.toString().toInt()-1)
}
私人游乐设施编号1(编号:Int){
整数\编号\ 1.setText($number)
}
私人娱乐节目展示号2(编号:Int){
整数\编号\ 2.setText($number)
}
}
XML:
=
是标识相等运算符。您应该使用赋值运算符=
,来更改值
使用TextView中的字符串作为存储整数值的方法非常笨拙。使用属性作为值会更干净。(在更复杂的情况下,可以将该值放入ViewModel的LiveData中。)
可以使用强制函数来限制值
将其包装在一起:
private var integer1 = 0
private var integer2 = 0
fun increaseInteger1() {
integer1 = (integer1 + 1).coerceAtMost(10)
display_number_1(integer1)
}
fun decreaseInteger1() {
integer1 = (integer1 - 1).coerceAtLeast(0)
display_number_1(integer1)
}
//...
也可以使用最小/最大值代替强制函数:
integer1 = min(10, integer1 + 1) // increment
integer1 = max(0, integer1 - 1) // decrement
或者,您可以为属性提供一个自定义设置器,强制它们保持在所需的限制范围内:
private var integer1: Int = 0
set(value) { field = value.coerceIn(0..10) }
private var integer2: Int = 0
set(value) { field = value.coerceIn(0..10) }
//...
fun increaseInteger1() {
display_number_1(++integer1)
}
fun decreaseInteger1() {
display_number_1(--integer1)
}
private var integer1: Int = 0
set(value) { field = value.coerceIn(0..10) }
private var integer2: Int = 0
set(value) { field = value.coerceIn(0..10) }
//...
fun increaseInteger1() {
display_number_1(++integer1)
}
fun decreaseInteger1() {
display_number_1(--integer1)
}