有没有人经历过这个?
我正在尝试从editText获取输入值。我做了以下。
val input = edittext_input.text.toString()
但结果却一无所获。我尝试记录edittext_input.text并且它有一个值。你们知道为什么会这样吗?这是kotlin的一个错误吗?
我找到的一个解决方法就是这个。
val input = "${edittext_input.text}"
更新 实际完整代码:
private fun setupUI() {
val inputTestText = (findViewById<EditText>(R.id.edittext_username)).text
val inputTestTextToString: String = 100.toString()
val userInput: String = edittext_username.text.toString()
val passInput = "${edittext_password.text}"
findViewById<Button>(R.id.button_login).setOnClickListener {
Log.i(TAG, "inputTestText is null? ${inputTestText == null}")
Log.i(TAG, "inputTestTextToString: $inputTestTextToString")
Log.i(TAG, "A user: $userInput password: $passInput")
Log.i(TAG, "B user: ${edittext_username.text} password: ${edittext_password.text}")
}
}
结果:
inputTestText is null? false
inputTestTextToString: 100
A user: password:
B user: test password: test
答案 0 :(得分:2)
您在onClickListener之前分配值,
val inputTestText = (findViewById<EditText>(R.id.edittext_username)).text
val inputTestTextToString: String = 100.toString()
val userInput: String = edittext_username.text.toString()
val passInput = "${edittext_password.text}"
在按钮单击侦听器中打印值
这里,变量得到空值,因为最初没有文本。放点东西后你点击按钮就会显示空值。而${edittext_username.text}
就是你从edittext字段中获取值。
您只需将赋值行放在onClickListener中。
最终代码应为,
findViewById<Button>(R.id.button_login).setOnClickListener {
val userInput: String = edittext_username.text.toString()
val passInput = "${edittext_password.text}"
//put above two line here
Log.i(TAG, "inputTestText is null? ${inputTestText == null}")
Log.i(TAG, "inputTestTextToString: $inputTestTextToString")
Log.i(TAG, "A user: $userInput password: $passInput")
Log.i(TAG, "B user: ${edittext_username.text} password: ${edittext_password.text}")
}
答案 1 :(得分:-1)
下面 - 使用来自kotlin-activity的编辑文本的示例 你可能不是在活动中初始化edittext吗?
XML
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
tools:context=".MainActivity">
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="toast" />
<EditText
android:layout_centerHorizontal="true"
android:id="@+id/edittext"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:hint="hint text"/>
</RelativeLayout>
活动
import android.app.Activity
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import android.widget.Toast
class MainActivity : Activity() {
lateinit var button: Button
lateinit var edittext: EditText
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
edittext = findViewById(R.id.edittext)
button = findViewById(R.id.button1)
button.setOnClickListener {
val input = edittext.text.toString()
Toast.makeText(this, input, Toast.LENGTH_LONG).show()
}
}
}
修改强>
代码: 变量(&#39; inputTestText&#39 ;,&#39; userInput&#39);#34&是本onCLickListener之前进行初始化,因此,当按下该按钮时,变量已经存在,和它们等于&#34 ;
&#39; $ {edittext_username.text}&#39; &#39; $ {} edittext_password.text&#39; - 这些不是变量,因此在单击按钮时会获取数据。