Android - 在用户输入之前和之后检查editText是否> 3 [英] Android - Checking if editText is >3 before and after user input

查看:19
本文介绍了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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆