android - 在 Kotlin 中设置和读取 EditText

标签 android kotlin android-textinputedittext

我有一个简单的问题(我希望)。

我有两个预设值(IP 和端口),我需要应用程序用户能够更改它们。我在一个类中有两个值。

public class SoftOptions {
    var RemoteHost: String = "192.168.43.237"
    var RemotePort: Int = 1234

}

然后当然是 val mySettings = SoftOptions()。

然后我在我的 MainActivity 中将它们显示为文本字段。然后,按下“设置”按钮后,我会转到一个名为“设置”的 Activity 。在其中,我将值放置到编辑框中,以便在仅更改最后一位数字时不必更改整个 IP 地址。我也解决了这个问题。
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    var editEnterip =  mySettings.RemoteHost
    var editEnterport= mySettings.RemotePort
    setContentView(R.layout.activity_settings)
    this.editEnterip.setText(mySettings.RemoteHost.toString())
    this.editEnterport.setText(mySettings.RemotePort.toString())

但是,在按钮监听器中,我只需要读取新值并将其分配给 mySettings.RemoteHost 和 mySettings.RemotePort 变量。
   btnSetip.setOnClickListener {
        var finalIP  =findViewById<EditText>(R.id.editEnterip)
        Toast.makeText(this, finalIP.toString(), Toast.LENGTH_SHORT).show()
        myTargetIP = finalIP.toString()
        mySettings.RemoteHost = finalIP.toString()

        editEnterport =  editEnterport .  toString () .toInt()
        myTargetPort = "$editEnterport"
        mySettings.RemotePort = myTargetPort.toString().toInt()
        val intent = Intent(this, MainActivity::class.java)
        intent.putExtra("myTargetIP", myTargetPort)
        intent.putExtra("myTargetPort", myTargetPort)
        startActivity(intent)
    }

但这虽然不会导致应用程序崩溃,但会将一个可怕的错误消息作为远程主机的值,即使编辑后的 ​​IP 值很好。

所以,我的问题仅仅是,我做错了什么没有从编辑框中得到一个干净的文本值?

这是我的用户界面中的消息。非常感谢,这个论坛是我使用过的最强大的论坛。

My user interface

最佳答案

为了从 edittext 获取文本,您必须使用 edittext 类的 getText() 方法,您可以引用此以获得更多详细信息 https://developer.android.com/reference/android/widget/EditText#getText()

getText() 将返回您 Editable ,您必须在其上应用 toString() 方法,该方法将为您提供字符串中的 editext 文本。

考虑到您有问题的代码,您可以通过以下方式获取它

var finalIP =findViewById<EditText>(R.id.editEnterip)
var textFromEditText = finalIP.text.toString() // access text this way
println(textFromEditText)

由于您使用的是 kotlin,因此无需编写完整的 getText(),这要归功于它的属性访问语法,您可以引用此处了解更多详细信息 https://kotlinlang.org/docs/reference/properties.html

关于android - 在 Kotlin 中设置和读取 EditText,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60744131/

相关文章:

java - If/else 条件与 firebase 值

android - 仅用于测试依赖项的 Gradle 模块输出配置

java - 传递 PBEKeySpec 时 SecretKeyFactory generateSecret 错误

android - 如何在约束布局中以编程方式添加 View ?

java - Android中动态添加onClick ActionListener到CheckBox

kotlin - Flux.collectList() 是否引入阻塞行为

generics - 在 Kotlin 中,是否可以将函数参数限制为 2 个类类型而不是 Any?

android - TextInputEditText 在具有数据绑定(bind)的输入上卡住

android - TextInputEditText - CompoundDrawable 未居中

android - 使用 Android 数字小键盘但允许负数