【问题标题】:Boolean values return false always布尔值总是返回 false
【发布时间】:2017-11-23 00:38:02
【问题描述】:

我正在尝试检查我的电子邮件是否与电子邮件类型匹配,以及我的密码长度是否大于 0,所以我使用布尔值来检查,但我认为这看起来很糟糕,因为它总是返回 false 并且无法更改值为 true 这是我的 java 代码:

private boolean mEmail_Correct = false;
private boolean mPass_Correct = false;

mEmail.addTextChangedListener(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) {
        if (android.util.Patterns.EMAIL_ADDRESS.matcher(s.toString()).matches()){mEmail_Correct = true;}
        else {mEmail_Correct = false;}}});

mPassword.addTextChangedListener(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) {
        if (s.lenght>0){mPass_Correct = true;}
        else {mPass_Correct = false;}}});

if (mEmail_Correct && mPass_Correct){}//I need to make sign in btn light
else {}//I need to make sign in btn dim/faint

//But nothing happen so what can i use instead of private booleans

两个布尔值都返回 false 所以有什么方法可以将布尔值更改为 true 我认为 mEmail_Correct = true;不能正常工作。

【问题讨论】:

  • 在按钮点击和类型时检查密码长度电子邮件类型你不能在按钮点击时执行此操作吗..?
  • 我需要这个方法是自动的,所以我不希望它通过按钮单击我实际上需要它,就像 instagram 登录活动一样。
  • mEmail_CorrectmPass_Correct 将永远是 false 如果你在那里检查它们。在用户在其中一个字段中输入内容后,您需要检查它们。代码执行侦听器,然后立即继续执行其余代码,这是您的检查。这可能是你的问题吗?

标签: android android-edittext boolean


【解决方案1】:

如果用户正确输入电子邮件和密码,您可以根据用户触发执行所需工作的功能

private boolean mEmail_Correct = false;
private boolean mPass_Correct = false;
mEmail.addTextChangedListener(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) {
    if (android.util.Patterns.EMAIL_ADDRESS.matcher(s.toString()).matches()){emailWrittenCorrect(true);}
    else {emailWrittenCorrect(false);}}});

mPassword.addTextChangedListener(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) {
        if (s.lenght>0){passwordWrittenCorrect(true);}
        else {passwordWrittenCorrect(false);}}});

private passwordWrittenCorrect(boolean x){
    passwordEmailCheck(null,x);
}
private void emailWrittenCorrect(boolean x){
    passwordEmailCheck(x,null);
}
private passwordEmailCheck(boolean emailStat, boolean passwordStat){
    if(emailStat!=null){
        mEmail_Correct = emailStat;

    }
    if(passwordStat!=null){
        mPass_Correct = passwordStat
    }
    if(emailStat && passwordStat){
       //show button
    }

}

【讨论】:

  • 嘿@Sami Kanafani,我如何比较两个布尔值。
  • 你指的是哪两个布尔值?
  • 我的意思是 passwordWrittenCorrect 和 emailWrittenCorrect 值,我需要检查这两个值是 true 布尔值还是 false,如果两个布尔值都是 true 那么登录 btn 将是亮的,如果不是它将是暗的,你懂了吗兄弟。
  • 对不起,迟到的兄弟,无论如何谢谢它完美地工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-10
  • 1970-01-01
  • 1970-01-01
  • 2017-06-25
  • 2017-04-22
  • 1970-01-01
相关资源
最近更新 更多