Kotlin edittext editable to string returns nothing

有没有人经历过这个?

我正在尝试从editText获取输入值。 我做了以下。

val input = edittext_input.text.toString() 

但结果是没有什么。 我试着记录edittext_input.text,它有一个值。 你们知道为什么会发生这种情况吗? 这是kotlin的错误吗?

我find的一个解决方法是这样的。

 val input = "${edittext_input.text}" 

更新:实际完整代码:

 private fun setupUI() { val inputTestText = (findViewById(R.id.edittext_username)).text val inputTestTextToString: String = 100.toString() val userInput: String = edittext_username.text.toString() val passInput = "${edittext_password.text}" findViewById

结果:

 inputTestText is null? false inputTestTextToString: 100 A user: password: B user: test password: test 

您在onClickListener之前分配值,

 val inputTestText = (findViewById(R.id.edittext_username)).text val inputTestTextToString: String = 100.toString() val userInput: String = edittext_username.text.toString() val passInput = "${edittext_password.text}" 

并在按钮点击监听器内打印值,

在这里,variables得到空值,因为最初没有文本。 把东西你点击按钮后,显示空值。 和${edittext_username.text}通过这个你正在从edittext字段获取值。

你只需要把分配线放在onClickListener里面。

最终的代码应该是,

 findViewById 

下面 – 使用kotlin-activity编辑文本的例子可能是你没有在activity中初始化edittext?

XML

      

活动

 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() } } } 

编辑

对于你的代码:variables(’inputTestText’,’userInput’)在onCLickListener之前被初始化,所以当你按下按钮时,variables已经存在了,它们等于“”

‘$ {edittext_username.text}”$ {edittext_password.text}’ – 这些不是variables,所以数据是在点击按钮时获取的。