Android - Checking if editText is gt;3 before and after user input(Android - 在用户输入之前和之后检查editText是否 3)
问题描述
我有一些代码,如果 editText 字段中的字符少于 3 个,我需要禁用创建帐户"按钮.如果用户输入 3 个字符,则该按钮应启用自身以便可以使用.
I have some code where I need a "Create Account" button to be disabled if an editText field has less than 3 char in it. If the User enters 3 chars, then the button should enable itself so that it can be used.
我已经构建了 if else 语句,如果 editText 字段中的字符少于 3 个,则禁用按钮,但是在输入时,当用户插入 3 个字符时,它不会重新评估该语句是否为真所以按钮当然会保持禁用状态.
I have constructed the if else statement that disables the button if there are less than 3 char in the editText field, BUT on input, when the user inserts 3 char, it does not re-evaluate to see if the statement is true so the button of course stays disabled.
一旦用户在编辑文本字段中输入 3 个字符,按钮应该会自行启用.
Once the user enters 3 char into the edit text field, the button should enable itself.
Button buttonGenerate = (Button) findViewById(R.id.btnOpenAccountCreate);
userInitials = (EditText) findViewById(R.id.etUserChar);
if (userInitials.getText().toString().length() > 3) {
// Account Generator Button
buttonGenerate.setEnabled(true); // enable button;
buttonGenerate.setOnClickListener(new OnClickListener() {
//Do cool stuff here
@Override
public void onClick(View v) {
}
});// END BUTTON
} else {
// If UserInitials is empty, disable button
Toast.makeText(this, "Please enter three(3) characters in the Initials Field ", Toast.LENGTH_LONG)
.show();
buttonGenerate.setEnabled(false); // disable button;
}// END IF ELSE
推荐答案
你想使用一个 TextWatcher
每当您的 EditText
中具有此 listener
的文本发生更改时,都会触发此事件.您只需像其他任何 listener
一样将 listener
附加到您的 EditText
然后覆盖其方法,并从下面的链接示例中检查长度
This will be triggered each time the text in your EditText
which has this listener
on it has changed. You just attach the listener
to your EditText
like you would any other listener
then override its methods and , from the linked example below, check the length
@Override
public void onTextChanged(CharSequence s, int start, int before, int count)
{
if (s.length() > 2)
{
buttonGenerate.setEnabled(true);
}
else
{
buttonGenerate.setEnabled(true);
}
}
您不需要签入您的 onClick()
然后,只需默认禁用 Button
并在您的 onTextChanged()
如果满足条件.
You don't need to check in your onClick()
then, just disable the Button
by default and enable in your onTextChanged()
if the condition is met.
重写
上面可以清理为
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
buttonGenerate.setEnabled((s.length() > 2));
}
我也改成了>2
因为我认为这实际上是你想要的,但你拥有它的方式有点令人困惑.您说输入三(3)",这听起来正好是 3,但您的代码看起来不同.无论如何,这对你来说很容易改变.
I also have changed it to > 2
because I think that's actually what you want but the way you have it is a little confusing. You say "enter three(3)" which sounds like exactly 3 but your code looks different. Anyway, that's easy enough for you to change.
查看这个答案的例子
这篇关于Android - 在用户输入之前和之后检查editText是否> 3的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Android - 在用户输入之前和之后检查editText是否> 3


- Java包名称中单词分隔符的约定是什么? 2022-01-01
- 将log4j 1.2配置转换为log4j 2配置 2022-01-01
- C++ 和 Java 进程之间的共享内存 2022-01-01
- Eclipse 插件更新错误日志在哪里? 2022-01-01
- 如何使用WebFilter实现授权头检查 2022-01-01
- Safepoint+stats 日志,输出 JDK12 中没有 vmop 操作 2022-01-01
- value & 是什么意思?0xff 在 Java 中做什么? 2022-01-01
- Spring Boot连接到使用仲裁器运行的MongoDB副本集 2022-01-01
- 从 finally 块返回时 Java 的奇怪行为 2022-01-01
- Jersey REST 客户端:发布多部分数据 2022-01-01