Я пытаюсь получить доступ к строке EditText в диалоговом окне, но получаю ошибку ссылки на нулевой объект и не могу понять, почему:
txtLostCreds.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Create dialog to set new password
AlertDialog.Builder builder = new AlertDialog.Builder(v.getContext());
builder.setTitle(R.string.txtResetPassword);
builder.setView(R.layout.customresetpassworddialog);
final AlertDialog alert = builder.create();
builder.setPositiveButton(R.string.txtResetPassword, new DialogInterface.OnClickListener() {
final EditText resetNewPassword = alert.findViewById(R.id.resetNewPassword);
final EditText resetNewPasswordConfirm = alert.findViewById(R.id.resetNewPasswordConfirm);
@Override
public void onClick(final DialogInterface dialog, int which) {
assert resetNewPassword != null;
assert resetNewPasswordConfirm != null;
if (checkPasswords(resetNewPassword, resetNewPasswordConfirm)) {
// reset the password
RequestParams params = new RequestParams();
params.put("uuid", prefs.getString("myUUID", ""));
params.put("newpassword", resetNewPassword.getText().toString());
AsyncHttpRequest.get("lost_credentials", params, new TextHttpResponseHandler() {
@Override
public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
t.MyToast(getResources().getString(R.string.txtConnError), 5000);
}
@Override
public void onSuccess(int statusCode, Header[] headers, String responseString) {
if (responseString.equals("OK")) {
// All done. Close dialog
alert.cancel();
} else {
t.MyToast(getResources().getString(R.string.txtConnError) + responseString, 5000);
}
}
});
}
}
});
builder.show();
}
});
Ошибка возникает, когда я вызываю функцию checkPasswords(resetNewPassword, resetNewPasswordConfirm)
.Я также пытался сделать findViewByID
на View v
, но выдает ту же ошибку.
Функция так же проста, как:
private boolean checkPasswords(EditText resetNewPassword, EditText resetNewPasswordConfirm) {
if (!resetNewPassword.getText().toString().equals(resetNewPasswordConfirm.getText().toString())) {
resetNewPassword.setError(getResources().getString(R.string.txtDifferentPasswords));
resetNewPasswordConfirm.setError(getResources().getString(R.string.txtDifferentPasswords));
return false;
} else {
return true;
}
}