android - 当两个EditText字段均输入至少一个字符时,启用按钮(Android)

标签 android kotlin

我创建的类使按钮可以在任何一个字段中输入。我如何修改它,以便仅当用户在两个EditText字段中都输入内容时才启用按钮。

    class BtnEnabler(){
        constructor(type:EditText, btn:Button):this(){
            btn.isEnabled = false
            type.addTextChangedListener(object : TextWatcher {
                override fun afterTextChanged(p0: Editable?) {
                }
                override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
                }
                override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
                }
            })
            fun EditText.afterTextChanged(afterTextChanged: (String) -> Unit) {
                this.addTextChangedListener(object : TextWatcher {
                    override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
                    }
                    override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
                    }
                    override fun afterTextChanged(editable: Editable?) {
                        afterTextChanged.invoke(editable.toString())
                    }
                })
            }
            type.afterTextChanged {btn.isEnabled = true}
        }
    }
    BtnEnabler(byear, sub_btn)
    BtnEnabler(bday, sub_btn)

此外,当用户删除所有输入文本时,是否可以再次禁用按钮?

最佳答案

 EditText editText1;
    EditText editText2;
    Button button;

    private void init() {
        // TODO: 5/18/2018 consider findViewById first 
        editText1.addTextChangedListener(textWatcher);
        editText2.addTextChangedListener(textWatcher);
    }

    private String getText(TextView textView) {
        return textView.getText().toString().trim();
    }

    TextWatcher textWatcher = new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {

        }

        @Override
        public void afterTextChanged(Editable s) {
            button.setEnabled(getText(editText1).length() > 0 && getText(editText2).length() > 0);
        }
    };

希望您可以将其转换为Kotlin。

关于android - 当两个EditText字段均输入至少一个字符时,启用按钮(Android),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50416979/

相关文章:

android - 在android中获取操作栏高度

设备设置意见中的Android应用偏好

android - classes.jar' 已经包含条目 'META-INF/module_name_debug.kotlin_module' ,无法覆盖

android - 动态添加图像

android - 在多个 Android Activity 之间共享 sqlite 数据库

android 手机和平板布局

java - 添加额外类时找不到 Android 源

kotlin - RecyclerView onClick in Kotlin

android - Android 中的库模块不包含依赖项

Android Room 缓慢迁移竞争条件