更改 Parse.com Android 的密码(前端检查)
Change password for Parse.com Android (Front-end check)
我试图在提交表单之前进行密码检查,但我没有得到想要的结果。基本上无论用户在这两个字段中输入什么,它都会从 mConfirmPasswordField 提交新密码。我想要发生的是,如果密码不匹配,因此 if (!(mNewPassword.equals(mConfirmPassword)),然后会显示一个警告对话框,仅此而已。根据下面的代码,这似乎应该是这种情况,但它只是将新密码保存给用户。我在这里做错了什么?
mNewPasswordField = (EditText)findViewById(R.id.newPassword);
mConfirmPasswordField = (EditText)findViewById(R.id.newPasswordAgain);
final String mNewPassword = mNewPasswordField.getText().toString();
final String mConfirmPassword = mConfirmPasswordField.getText().toString();
mNewPasswordField.setText(mNewPassword);
mConfirmPasswordField.setText(mConfirmPassword);
Button mButton = (Button) findViewById(R.id.submitPasswordChanges);
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!(mNewPassword.equals(mConfirmPassword))) {
AlertDialog.Builder builder = new AlertDialog.Builder(ChangePasswordActivity.this);
builder.setMessage("Please check that you've entered and confirmed your new password!")
.setTitle("Error:")
.setPositiveButton(android.R.string.ok, null);
AlertDialog dialog = builder.create();
dialog.show();
} else {
setProgressBarIndeterminateVisibility(true);
//Update user
ParseUser user = ParseUser.getCurrentUser();
user.setPassword(mConfirmPasswordField.getText().toString());
user.saveInBackground(new SaveCallback() {
public void done(com.parse.ParseException e) {
// TODO Auto-generated method stub
LaunchPersonalGalleryIntent();
}
});
}
}
我认为问题在于您没有更新字段:您应该在用户单击按钮时立即检查新值,例如:
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mNewPassword = mNewPasswordField.getText().toString();
mConfirmPassword = mConfirmPasswordField.getText().toString();
if (!(mNewPassword.equals(mConfirmPassword))) {
....
} else {
....
}
}
});
final String mNewPassword = mNewPasswordField.getText().toString();
final String mConfirmPassword = mConfirmPasswordField.getText().toString();
这将在 EditText
仍然为空时执行,因此 mNewPassword
等于 mConfirmPassword
等于 ""
。
这两个字符串应该在onClick
:
内检索
..
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final String mNewPassword = mNewPasswordField.getText().toString();
final String mConfirmPassword = mConfirmPasswordField.getText().toString();
if (!(mNewPassword.equals(mConfirmPassword))) {
..
我应该提醒其他经过的人,您还需要在 onClick 方法中包括以下字段以及密码字符串。
..
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mNewPasswordField = (EditText)findViewById(R.id.newPassword);
mConfirmPasswordField = (EditText)findViewById(R.id.newPasswordAgain);
final String mNewPassword = mNewPasswordField.getText().toString();
final String mConfirmPassword = mConfirmPasswordField.getText().toString();
mConfirmPasswordField.setText(mConfirmPassword);
if (!(mNewPassword.equals(mConfirmPassword))) {
..
我试图在提交表单之前进行密码检查,但我没有得到想要的结果。基本上无论用户在这两个字段中输入什么,它都会从 mConfirmPasswordField 提交新密码。我想要发生的是,如果密码不匹配,因此 if (!(mNewPassword.equals(mConfirmPassword)),然后会显示一个警告对话框,仅此而已。根据下面的代码,这似乎应该是这种情况,但它只是将新密码保存给用户。我在这里做错了什么?
mNewPasswordField = (EditText)findViewById(R.id.newPassword);
mConfirmPasswordField = (EditText)findViewById(R.id.newPasswordAgain);
final String mNewPassword = mNewPasswordField.getText().toString();
final String mConfirmPassword = mConfirmPasswordField.getText().toString();
mNewPasswordField.setText(mNewPassword);
mConfirmPasswordField.setText(mConfirmPassword);
Button mButton = (Button) findViewById(R.id.submitPasswordChanges);
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!(mNewPassword.equals(mConfirmPassword))) {
AlertDialog.Builder builder = new AlertDialog.Builder(ChangePasswordActivity.this);
builder.setMessage("Please check that you've entered and confirmed your new password!")
.setTitle("Error:")
.setPositiveButton(android.R.string.ok, null);
AlertDialog dialog = builder.create();
dialog.show();
} else {
setProgressBarIndeterminateVisibility(true);
//Update user
ParseUser user = ParseUser.getCurrentUser();
user.setPassword(mConfirmPasswordField.getText().toString());
user.saveInBackground(new SaveCallback() {
public void done(com.parse.ParseException e) {
// TODO Auto-generated method stub
LaunchPersonalGalleryIntent();
}
});
}
}
我认为问题在于您没有更新字段:您应该在用户单击按钮时立即检查新值,例如:
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mNewPassword = mNewPasswordField.getText().toString();
mConfirmPassword = mConfirmPasswordField.getText().toString();
if (!(mNewPassword.equals(mConfirmPassword))) {
....
} else {
....
}
}
});
final String mNewPassword = mNewPasswordField.getText().toString();
final String mConfirmPassword = mConfirmPasswordField.getText().toString();
这将在 EditText
仍然为空时执行,因此 mNewPassword
等于 mConfirmPassword
等于 ""
。
这两个字符串应该在onClick
:
..
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final String mNewPassword = mNewPasswordField.getText().toString();
final String mConfirmPassword = mConfirmPasswordField.getText().toString();
if (!(mNewPassword.equals(mConfirmPassword))) {
..
我应该提醒其他经过的人,您还需要在 onClick 方法中包括以下字段以及密码字符串。
..
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mNewPasswordField = (EditText)findViewById(R.id.newPassword);
mConfirmPasswordField = (EditText)findViewById(R.id.newPasswordAgain);
final String mNewPassword = mNewPasswordField.getText().toString();
final String mConfirmPassword = mConfirmPasswordField.getText().toString();
mConfirmPasswordField.setText(mConfirmPassword);
if (!(mNewPassword.equals(mConfirmPassword))) {
..