问题描述
因此,在我在密码 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);
}