如何从 Kotlin 中的 TextInputLayout 获取文本?

How to get text from TextInputLayout in Kotlin?

我有一个 ID 为 login_mobile_number 的文本输入布局,我已导入此模块以停止使用 findViewById 方法:

import kotlinx.android.synthetic.main.activity_login.*

每当我尝试通过

从 TextInputLayout 获取文本时
val loginMobileNumberString:String = login_mobile_number.editText.toString()

它 returns 对象名称而不是像这样在其中键入的字符串:

android.support.design.widget.TextInputEditText{dfdb412 VFED..CL. .F...... 0,0-888,136 #7f0800e1 app:id/textInputEditText}

为什么会这样?从该字段获取字符串的正确方法是什么?

您只需要这样做:

val loginMobileNumberString:String = login_mobile_number.text.toString()

此外,您不需要从文本输入布局中获取文本,他应该只负责输入的布局,顾名思义,您可以直接从编辑文本中进行操作。只需给它一个 id 并以与文本输入布局相同的方式导入。

你可以用这个;

val loginMobileNumberString = login_mobile_number.text.toString()

无需指定为:String

另一种方法是用引号括起来,使它成为一个字符串

val loginMobileNumberString = "${login_mobile_number.text}"

或者如果 login_mobile_number 指的是 TextInputLayout

val loginMobileNumberString = "${login_mobile_number.editText.text}"

从 TextInputLayout 中的 TextInputEditText 获取文本

<com.google.android.material.textfield.TextInputLayout
    android:id="@+id/descriptionInputLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:layout_constraintTop_toBottomOf="@+id/editTextDate2"
    tools:layout_editor_absoluteX="184dp">

    <com.google.android.material.textfield.TextInputEditText
        android:layout_width="match_parent"
        android:layout_height="250dp"
        android:hint="Description" />
</com.google.android.material.textfield.TextInputLayout>

获取文本

val description = descriptionInputLayout.editText?.text.toString()
println("Description: $goalDescription")