我正在尝试在用户登录活动中显示带有两个按钮("确定"和#34;发送电子邮件")的警告对话框。我正在使用firebase进行用户身份验证。在尝试实施警报对话框之前,我使用Toast.makeText
来显示该电子邮件地址未经过验证,我的工作正常。但是现在我想让用户再次请求电子邮件验证链接,以防他们找不到上一封邮件。我经历了https://developer.android.com/guide/topics/ui/dialogs.html并且还经历了关于slackoverflow的一些问题和答案。我在这里面临的问题是即使我可以通过创建片段类来弹出对话框,但我无法使用此选项。因为我不知道从firebase到另一个类检索当前用户实例的方法。如果我尝试这样做,它总是粉碎应用程序。因此,我尝试在活动类中实现警报对话框,您可以在下面看到我的代码。
firebaseAuth.signInWithEmailAndPassword(email, password)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
progressDialog.dismiss();
if(task.isSuccessful()){
final FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (!user.isEmailVerified()){
AlertDialog.Builder emailAlert = new AlertDialog.Builder(getActivity());
emailAlert.setTitle("Verify you email");
emailAlert.setMessage("The email address is not verified.");
emailAlert.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
firebaseAuth.signOut();
return;
}
});
emailAlert.setNegativeButton(R.string.send_email, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
user.sendEmailVerification()
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()){
Toast.makeText(LoginActivity.this, "Email Sent", Toast.LENGTH_SHORT).show();
}
firebaseAuth.signOut();
return;
}
});
}
});
emailAlert.create();
}
startActivity(new Intent(getApplicationContext(),HomeActivity.class));
}
else{
Toast.makeText(LoginActivity.this, "Login Failed, please make sure all feids are complete", Toast.LENGTH_SHORT).show();
}
progressDialog.dismiss();
}
});
没有运行时错误,但警报对话框未显示。有人可以指出我做错了什么吗?如果有更好的方法可以获得相同的结果,请告诉我。
答案 0 :(得分:0)
首先替换
AlertDialog.Builder emailAlert = new AlertDialog.Builder(getActivity());
与
AlertDialog.Builder emailAlert = new AlertDialog.Builder(this);
因为getActivity()不适用于Activity。
主要是替换
emailAlert.create();
与
emailAlert.show();
希望你的问题能够得到解决。