我正在尝试使用相同的EDITTEXT控制器来获取密码和确认密码,这是我正在使用的代码。
public class MainActivity extends Activity {
protected Button SignupButton;
protected EditText NameSignup,EmailSignup,PasswordSignup;
String passwordInitial;
int Inte = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//initialize
SignupButton = (Button)findViewById(R.id.signupButtonSignup);
NameSignup = (EditText)findViewById(R.id.nameSignup);
EmailSignup = (EditText)findViewById(R.id.emailSignup);
PasswordSignup = (EditText)findViewById(R.id.passwordSignup);
PasswordSignup.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if(!hasFocus) {
if (0 >= Inte){
//you require to put validations you want
passwordInitial = PasswordSignup.getText().toString();
PasswordSignup.setText(null);
PasswordSignup.setHint("Confirm Password");
PasswordSignup.requestFocus();
Inte++;
}else {
Inte--;
return;
}
}
}
});
但我面临的问题是,当用户第一次输入密码并且edittext失去焦点时,焦点将回到密码字段,这就是我想要的,但问题是松开焦点我必须选择另一个场,然后当键盘弹出时我输入的是在EDITTEXT字段中,我有CHOOSEN松散焦点而不是密码字段。我可以做些什么来使这个功能尽可能顺利地发生。
编辑:更详细的解释
在正常的注册表单/活动中,您有一个/ s来双重确认您的密码。一种是你输入passwod,另一次是确认你输入了正确的密码,这是非常自我解释的。在我的应用程序中,我想将这两个只用于一个EDITTEXT控制器,这意味着一旦用户第一次输入密码并且松散焦点,我想将焦点带回同一个EDITTEXT控制器并要求他输入确认密码,所以一旦他这样做,当他在我的活动中按下注册按钮时,我将检查密码是否第一次输入并且第二次匹配并继续注册。希望这是足够清楚的(这是我不确定如何在第二次完成密码输入后如何放松焦点的部分)
答案 0 :(得分:0)
试试这个并检查 “ 首先声明一个公共布尔值
boolean confirmvisible=false;
然后
PasswordSignup.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if(!confirmvisible) {
confirmvisible=true;
//you require to put validations you want
passwordInitial = PasswordSignup.getText().toString();
PasswordSignup.setText("");
PasswordSignup.setHint("Confirm Password");
PasswordSignup.requestFocus();
Inte++;
}else {
Inte--;
if(passwordInitial.equalsIgnoreCase(PasswordSignup.getText().toString())){
System.out.println("password match");
}
else
System.out.println("password missmatch");
return;
}
}
}
});