首页 > 解决方案 > 使用十字按钮清除两个编辑文本

问题描述

我有一个应用程序,其中有登录表单,并且在编辑文本的末尾有一个十字按钮,但它们无法正常工作。我想要这样的东西:

在此处输入图像描述

对于电子邮件工作正常,但不适用于密码。我正在使用 Text Watcher 类进行这些操作,这是我的代码:

public class LoginActivity extends AppCompatActivity {

    private EditText edEmail, edPassword;
    private ImageButton cross_button_email, cross_button_password;
    private TextView tvRegister;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);

        init();
        gotoRegisterActivity();
    }

    private void init() {
        edEmail               = findViewById(R.id.ed_email);
        edPassword            = findViewById(R.id.ed_password);
        cross_button_email    = findViewById(R.id.imageButton_email);
        cross_button_password = findViewById(R.id.imageButton_password);
        tvRegister            = findViewById(R.id.register_for_new_account);

        edEmail.addTextChangedListener(textWatcher());
        cross_button_email.setOnClickListener(onClickListener());

        edPassword.addTextChangedListener(textWatcher());
        cross_button_password.setOnClickListener(onClickListener());

        cross_button_email.setVisibility(View.INVISIBLE);
        cross_button_password.setVisibility(View.INVISIBLE);
    }

    private View.OnClickListener onClickListener() {
        return new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                edEmail.setText(""); // clear editText
                edPassword.setText("");
            }
        };
    }

    private void gotoRegisterActivity() {
        tvRegister.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent goToRegisterActivity = new Intent(LoginActivity.this, RegisterActivity.class);
                startActivity(goToRegisterActivity);
            }
        });
    }

    private TextWatcher textWatcher() {
        return new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence charSequence, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence charSequence, int start, int before, int count) {
                if (!edEmail.isActivated()) {
                    if (!edEmail.getText().toString().equals("")) {
                        cross_button_email.setVisibility(View.VISIBLE);
                    } else {
                        cross_button_email.setVisibility(View.GONE);
                    }
                } else  {
                    if (!edPassword.getText().toString().equals("")) {
                        cross_button_password.setVisibility(View.VISIBLE);
                    } else {
                        cross_button_password.setVisibility(View.GONE);
                    }
                }
            }

            @Override
            public void afterTextChanged(Editable editable) {

            }
        };
    }

}

任何帮助表示赞赏。

标签: javaandroid

解决方案


       cross_button_email.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) 
        {  
           //to do //
              edEmail.setText(""); // 
           /*  you can also set flag when user On Click button */
        }
    });

推荐阅读