我有一个功能正常的按钮,其增量和减量功能正常。但我也需要使用EdidText手动输入值。
我的代码如下:
Activity.tk
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.Button
import android.widget.TextView
class MainActivity : AppCompatActivity() {
internal var minteger = 0
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val plus = findViewById<Button>(R.id.increase)
val minus = findViewById<Button>(R.id.decrease)
plus.setOnClickListener {
increaseInteger(plus)
}
minus.setOnClickListener {
decreaseInteger(minus)
}
}
fun increaseInteger(view: View) {
minteger += 1
display(minteger)
}
fun decreaseInteger(view: View) {
minteger -= 1
display(minteger)
}
private fun display(number: Int) {
val displayInteger = findViewById<View>(
R.id.integer_number) as TextView
displayInteger.text = "" + number
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="16dp"
android:gravity="center_horizontal"
android:orientation="vertical"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="56dp"
android:orientation="horizontal">
<Button
android:id="@+id/decrease"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="-" />
<TextView
android:id="@+id/integer_number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:layout_marginLeft="40dp"
android:layout_marginRight="40dp"
android:layout_marginTop="16dp"
android:text="0"
android:textStyle="bold"
android:textSize="70sp" />
<Button
android:id="@+id/increase"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="+" />
</LinearLayout>
</LinearLayout>
我用EditText(@+id/integer_number
)更改了TextView
但是当我输入一个未保存的值时,我无法找到一种方法来保存在EdidText中输入的值,从而可以增加或减少它。
对于能够操作我的按钮的任何建议,我将不胜感激。
答案 0 :(得分:3)
在您的xml中更改为EditText
:
<EditText
android:id="@+id/integer_number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:layout_marginLeft="40dp"
android:layout_marginRight="40dp"
android:layout_marginTop="16dp"
android:text="0"
android:inputType="number"
android:textStyle="bold"
android:textSize="70sp" />
我添加了属性:
android:inputType="number"
因此只能使用数字。
在您的MainActivity
类中,添加以下导入:
import kotlinx.android.synthetic.main.activity_main.*
因此您可以访问xml中的所有项目,而无需使用findViewById()
。
现在,您无需将EditText的值保存在任何地方,因为您可以随时通过以下方式获取它:
integer_number.text.toString().toInt()
因此不再需要变量minteger
。
将活动代码更改为此:
导入android.os.Bundle
导入android.support.v7.app.AppCompatActivity
导入kotlinx.android.synthetic.main.activity_main。*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
increase.setOnClickListener { increaseInteger() }
decrease.setOnClickListener { decreaseInteger() }
}
fun increaseInteger() {
display(integer_number.text.toString().toInt() + 1)
}
fun decreaseInteger() {
display(integer_number.text.toString().toInt() - 1)
}
private fun display(number: Int) {
integer_number.setText("$number")
}
}
我也做了其他简化。
函数increaseInteger()
和decreaseInteger()
不需要任何参数。
最大和最小整数值有限制。
因此,为了安全起见,还必须在try/catch
和increaseInteger()
内使用decreaseInteger()
块,以避免出现异常。