Kotlin:EditText没有被清除,奇怪

时间:2018-11-22 12:29:09

标签: android kotlin android-edittext

我正在尝试在提交表单后重置EditText。 EditText在TextInputLayout内部。

EditText的Xml代码段

<android.support.design.widget.TextInputLayout
                android:id="@+id/til_email"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <EditText
                    android:id="@+id/et_email"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:hint="Email ID *"
                    android:inputType="textEmailAddress"
                    android:textSize="10sp" />

</android.support.design.widget.TextInputLayout>

科特琳片段:

private lateinit var etEmail: EditText
private lateinit var tilEmail: TextInputLayout

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_online_academy)

        etEmail = findViewById(R.id.et_email)
        tilEmail = findViewById(R.id.til_email)

    }

我尝试了其他方法来清除EditText,但没有任何效果。

方法1:

etEmail.text.clear()

方法2:

etEmail.text = null

方法3:

etEmail.setText("", TextView.BufferType.EDITABLE)

方法4:

val blank = "\u0020"
etEmail.setText(blank)

方法5:

textInputLayoutEmail.editText.text.clear()

方法6:

etEmail.post { etEmail.text.clear() }

我在logcat中没有收到任何错误或警告。表单提交也可以。谢谢。

2 个答案:

答案 0 :(得分:0)

首先,请确保您在课堂活动的导入中包含以下行:

import kotlinx.android.synthetic.main.activity_online_academy.*

在Kotlin中,您无需使用findViewById
您可以在活动类代码中的任何地方使用et_emailtil_email
因此,et_email.setText("")

答案 1 :(得分:0)

有一些与调试相关的问题需要找出。可能是由于您代码的其他部分正在干扰而导致某些奇怪的行为,或者只是设备上的故障而已。

您可以尝试一些事情

  1. 首先只需删除清除代码。而不是清除edittextView,而只需放置一些 string 来查看您是否能够通过代码设置字符串。如果您可以设置et_email.setText("some random string")之类的任何字符串,则只需将此行替换为此代码et_email.setText("")
  2. 如果它仍然不起作用(您可以设置字符串但不能设置“”字符串)那么这不只是奇怪,这是很奇怪的事情。您绝对应该在其他设备上尝试使用您的代码,或者只是重新启动您的Android手机或模拟器。
  3. 如果您正在模拟器中进行测试,我强烈建议您在“实际”设备或“新模拟器”中进行测试,或者只是卸载应用程序并重新安装。导致奇怪和异常的行为(如果不是由于编码或逻辑错误引起的),大多数情况下都是由于未知软件问题或由于计算机感染引起的。
  4. 最后但并非最不重要的尝试尝试清理构建或使缓存无效并重新启动android studio并重新编译整个代码