我正在尝试这样做,用户正在注册,而对于密码字段,我不想拥有两个密码字段(如传统密码,另一个是确认密码)我想只有一个edittext以及第一次输入密码和松散焦点后,下面的代码是不言自明的
passwordSgnup_et.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if(!hasFocus ) {
if (i <= 0) {
passwordSgnup_et.requestFocus();
cfmPasswordSgnup = Password;
passwordSgnup_et.getText().clear();
passwordSgnup_et.setHint("Confirm Password");
if (passwordSgnup_et.getText().toString() .equals( cfmPasswordSgnup)) {
ParseUser userSignup = new ParseUser();
userSignup.setUsername(Name);
userSignup.setEmail(Email);
userSignup.setPassword(Password);
userSignup.put("Nickname",nickName);
我面临的问题是这个。如何输入确认密码并与第一次输入的密码匹配。我很困惑。同样要在确认密码与第一个密码匹配后退出,我正在使用好的旧的int i&lt; = 0逻辑来改善这个?
编辑: 这个问题作为副本被关闭只是指另一个等于问题,我的问题是,在逻辑中你可以看到,
passwordSgnup_et.setHint("Confirm Password");
if (passwordSgnup_et.getText().toString() .equals( cfmPasswordSgnup)) {
在这两行之间我需要输入userinput(confirmmpassword)来实际与第一个密码进行比较,这就是我无法得到它。
答案 0 :(得分:1)
一个解决方法只使用一个edittext
String password = null;
edittext.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
//First time edittext will be with default initialization so no tag will be set so u can check
if (!hasFocus){
if (v.getTag() == null){
//you require to put validations you want
password = edittext.getText().toString();
v.setTag("c");
v.setText("");
v.setHint("Confirm Password");
v.requestFocus();
}else if (((String)v.getTag()).equals("c"){
//It is now confirm password field lost focus
}
}
}
});
除此之外你还可以实现textwatcher,在afterTextChanged中你可以检查
if (((String)v.getTag()).equals("c") {
// So user has completed entering confirm password so you can put a check.
}
我没有测试过这段代码,因此可能会遇到一些代码级问题/警告,需要在实际实现中修复。
答案 1 :(得分:0)
我认为你想使用TextWatcher
。
TextView.addTextWatcher(...)
有回调可以获取有关输入何时完成的信息。
并查看OnFocusChangeListener
界面!