微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么我的密码 EditText 不保存我的输入?

如何解决为什么我的密码 EditText 不保存我的输入?

因此,在我在密码 EditText 中输入我的文本后,它不会被保存。但其余的 EditText 输入效果很好。密码 EditText 有什么问题? 我尝试了所有我能做的,但我总是得到空密码。

公共类 MainActivity 扩展 AppCompatActivity {

public Spinner countriesList ;
public Button btnRegistration,pickImgBtn;
private ConstraintLayout mainConstrain;
private EditText name,email,password,reEnterPassword;
private CheckBox iAgree;
public RadioGroup radioGroup;


private static final int PICK_IMAGE = 100;
private ImageView imageView;
private Uri imageUri;

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


    countriesList=findViewById(R.id.countrySpinnerId);

    mainConstrain=findViewById(R.id.mainConstrainId);

    btnRegistration=findViewById(R.id.btnRegisterId);
    pickImgBtn=findViewById(R.id.pickImgBtnId);

    //Input
    name=findViewById(R.id.nameId);
    email=findViewById(R.id.emailId);
    password=findViewById(R.id.passwordId);
    reEnterPassword=findViewById(R.id.reEnterPasswordId);

    radioGroup=findViewById(R.id.radioGroupId);

    //CheckBox
    iAgree=findViewById(R.id.iAgreeId);

    imageView=findViewById(R.id.imageView);

    setCountriesList(countriesList);





    btnRegistration.setonClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            showSnackbar("You have registered: ");
            checkInputData(radioGroup,iAgree,reEnterPassword,name,email);
            addNewPeople(name,countriesList,radioGroup);
            setStartData(name,iAgree);
        }
    });

这是代码的第二部分!

public void addNewPeople(EditText name,EditText email,EditText password,Spinner contries,RadioGroup group) {
    if (!(name.getText().toString().equals("")) && !(email.getText().toString().equals("")) && !(password.getText().toString().equals("")))
       SecondaryActivity.peoples.add(new People(name.getText().toString(),email.getText().toString(),password.getText().toString(),contries.getSelectedItem().toString(),group.getCheckedRadioButtonId()));
    else
        showSnackbar("Fill all fields");

}

这是设置点击按钮后数据为空的代码

  private void setStartData(EditText name,EditText reEnterPassword,CheckBox iAgree) {
    name.setText("");
    email.setText("");
    password.setText("");
    reEnterPassword.setText("");
    iAgree.setChecked(false);
}

private void checkInputData(RadioGroup radioGroup,CheckBox iAgree,EditText name,EditText email) {
   if (radioGroup.getCheckedRadioButtonId() == -1  )
     radioGroup.setBackgroundColor(Color.RED);

   if (radioGroup.getCheckedRadioButtonId() != -1 )
       radioGroup.setBackgroundColor(Color.TRANSPARENT);

   if (!(iAgree.isChecked()))
       iAgree.setTextColor(Color.RED);

    if (iAgree.isChecked())
        iAgree.setTextColor(Color.BLACK);

    // is Password same
    if (password.getText().toString().equals(reEnterPassword.getText().toString())) {
        password.setText("");
        reEnterPassword.setText("");
        password.setHint("Password are not same");
        password.setHintTextColor(Color.RED);
    }

    //Input name,email and pass emptiness check

        if (name.getText().toString().equals("")) {
            name.setHint("Unesi ime");
            name.setHintTextColor(Color.RED);
        }else{
            name.setHintTextColor(Color.GRAY);
        }

        if (email.getText().toString().equals("")){
            email.setHint("Unesi email");
            email.setHintTextColor(Color.RED);
        }
        else{
            email.setHintTextColor(Color.GRAY);
        }


        if (password.getText().toString().equals("")){
            password.setHint("Unesi password.....");
            password.setHintTextColor(Color.RED);
        }
        else{
            password.setHintTextColor(Color.GRAY);
        }
}

希望有人能帮忙

解决方法

根据你的说法,我假设这段代码一直在执行:

if (password.getText().toString().equals("")){
            password.setHint("Unesi password.....");
            password.setHintTextColor(Color.RED);
        }

我说得对吗?

您确定 findViewById 中使用的 id 是正确的吗? 如果我是你,我会在 setOnClickListener 调用 checkInputData 中放置一个断点。

,

我认为问题出在你的逻辑上。

// is Password same
if (password.getText().toString().equals(reEnterPassword.getText().toString())) {
    password.setText("");
    reEnterPassword.setText("");
    password.setHint("Password are not same");
    password.setHintTextColor(Color.RED);
}

应该是这样的

// if the Password is not same
if (!password.getText().toString().equals(reEnterPassword.getText().toString())) {
    password.setText("");
    reEnterPassword.setText("");
    password.setHint("Password are not same");
    password.setHintTextColor(Color.RED);
}

密码和重新输入的密码必须一致

,

您应该像这样检查密码是否为空:

if (!TextUtils.isEmpty(edittext.gettext())){
    //Your logic here
}
else {
    //Do something else.
}
  • TextUtils.isEmpty() 方法可用于检查字符串是否为空。您也可以使用 str.equals(""),但是对于 edittext,如果您从 edittext 获取空字符串,它可能会导致崩溃。所以 TextUtils.isEmpty() 是这里最安全的方法。

  • 此外,在相关块中放入一些 Toast 或 Log 以检查您从密码编辑文本中获得的值。它可以让您清楚地了解您获得的价值。

是的!您的密码检查逻辑也是错误的。所以也要检查一下。 :)

,

这个逻辑的问题

// is Password same
    if (password.getText().toString().equals(reEnterPassword.getText().toString())) {
        password.setText("");
        reEnterPassword.setText("");
        password.setHint("Password are not same");
        password.setHintTextColor(Color.RED);
    }

只是你错过了!操作员

// is Password same
    if (!password.getText().toString().equals(reEnterPassword.getText().toString())) {
        password.setText("");
        reEnterPassword.setText("");
        password.setHint("Password are not same");
        password.setHintTextColor(Color.RED);
    }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。