Android 带有从firebase请求电子邮件验证链接选项的警报对话框不工作

Android 带有从firebase请求电子邮件验证链接选项的警报对话框不工作,android,firebase,firebase-authentication,Android,Firebase,Firebase Authentication,我试图在用户登录活动中显示一个带有两个按钮(“确定”和“发送电子邮件”)的警报对话框。我正在使用firebase进行用户身份验证。在尝试实现警报对话框之前,我使用了Toast.makeText来显示电子邮件地址未经验证,我的工作非常正常。但现在,我想给用户一个选项,要求再次电子邮件验证链接,以防他们找不到前一个。我看了一遍,也看了一些关于slackoverflow的问题和答案。我在这里面临的问题是,即使我可以通过创建一个片段类来弹出对话框,我也不能使用这个选项。因为我不知道如何将当前用户实例从f

我试图在用户登录活动中显示一个带有两个按钮(“确定”和“发送电子邮件”)的警报对话框。我正在使用firebase进行用户身份验证。在尝试实现警报对话框之前,我使用了
Toast.makeText
来显示电子邮件地址未经验证,我的工作非常正常。但现在,我想给用户一个选项,要求再次电子邮件验证链接,以防他们找不到前一个。我看了一遍,也看了一些关于slackoverflow的问题和答案。我在这里面临的问题是,即使我可以通过创建一个片段类来弹出对话框,我也不能使用这个选项。因为我不知道如何将当前用户实例从firebase检索到另一个类。如果我尝试这样做,它总是会压垮应用程序。因此,我尝试在activity类中实现alert对话框,您可以在下面看到我的代码

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();
                }
            });
firebaseAuth.signiWithEmailandPassword(电子邮件,密码)
.addOnCompleteListener(这是新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
progressDialog.disclose();
if(task.issusccessful()){
最终FirebaseUser用户=FirebaseAuth.getInstance().getCurrentUser();
如果(!user.isEmailVerified()){
AlertDialog.Builder emailAlert=新建AlertDialog.Builder(getActivity());
emailAlert.setTitle(“验证您的电子邮件”);
emailAlert.setMessage(“未验证电子邮件地址”);
emailAlert.setPositiveButton(R.string.ok,新的DialogInterface.OnClickListener(){
public void onClick(DialogInterface对话框,int-id){
firebaseAuth.signOut();
返回;
}
});
emailAlert.setNegativeButton(R.string.send_email,新的DialogInterface.OnClickListener(){
public void onClick(DialogInterface对话框,int-id){
user.sendEmailVerification()
.addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
Toast.makeText(LoginActivity.this,“电子邮件已发送”,Toast.LENGTH_SHORT.show();
}
firebaseAuth.signOut();
返回;
}
});
}
});
emailAlert.create();
}
startActivity(新意图(getApplicationContext(),HomeActivity.class));
}
否则{
Toast.makeText(LoginActivity.this,“登录失败,请确保所有feid都已完成”,Toast.LENGTH_SHORT.show();
}
progressDialog.disclose();
}
});
没有运行时错误,但未显示警报对话框。有人能指出我做错了什么吗?请告诉我是否有更好的方法获得同样的结果。

首先

AlertDialog.Builder emailAlert=新建AlertDialog.Builder(getActivity())

AlertDialog.Builder emailAlert=新建AlertDialog.Builder(此)

因为getActivity()不适用于活动

最重要的是,要取代

emailAlert.create()

emailAlert.show()

希望您的问题能得到解决。

首先,请更换

AlertDialog.Builder emailAlert=新建AlertDialog.Builder(getActivity())

AlertDialog.Builder emailAlert=新建AlertDialog.Builder(此)

因为getActivity()不适用于活动

最重要的是,要取代

emailAlert.create()

emailAlert.show()


希望你的问题能解决。

我很高兴。谢谢,这是我的荣幸。谢谢