当前位置: 首页 > 知识库问答 >
问题:

Android Firebase密码重置错误

鲜于煜祺
2023-03-14

每当我试图将电子邮件输入alertdialog时,我都会出错。我试图让它发送一个恢复密码的电子邮件输入。这是我收到的代码和错误消息

代码:

public void PassResetViaEmail(View view)
{
    AlertDialog.Builder alertdialog = new AlertDialog.Builder(Settings.this);
    alertdialog.setTitle("Reset password");
    alertdialog.setMessage("Enter email below");

    EditText input = new EditText(this);
    email = input.getText().toString().trim();
    alertdialog.setView(input);

    alertdialog.setPositiveButton("Send", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            ResetEmailSender();
        }
    });

    alertdialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            dialog.dismiss();
        }
    });

    alertdialog.show();
}

public void ResetEmailSender()
{
    auth.sendPasswordResetEmail(email).addOnCompleteListener(
        new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                if (task.isSuccessful()) {
                    Toast.makeText(Settings.this, "We have sent you instructions to reset your password!", Toast.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(Settings.this, "Failed to send reset email!", Toast.LENGTH_SHORT).show();
                }
            }
        });
}

错误:

04-14 02:25:40.842 20031-20031/com.safariagaming.flix E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.safariagaming.flix, PID: 20031
java.lang.NullPointerException: Attempt to invoke virtual method 'com.google.android.gms.tasks.Task com.google.firebase.auth.FirebaseAuth.sendPasswordResetEmail(java.lang.String)' on a null object reference
    at com.safariagaming.flix.Settings.ResetEmailSender(Settings.java:105)
    at com.safariagaming.flix.Settings$2.onClick(Settings.java:91)
    at android.support.v7.app.AlertController$ButtonHandler.handleMessage(AlertController.java:161)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:154)
    at android.app.ActivityThread.main(ActivityThread.java:6119)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)

共有1个答案

葛念
2023-03-14

我想这就是问题所在:

EditText input = new EditText(this);
email = input.getText().toString().trim();

“电子邮件”仅存在于“PassResetViaEmail”中,不存在于“ResetEmailSender”中。试试这个:

alertdialog.setPositiveButton("Send", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            ResetEmailSender(email);
        }
    });

和“ResetEmailSender”:

public void ResetEmailSender(String email)
{
    auth.sendPasswordResetEmail(email).addOnCompleteListener(
        new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                if (task.isSuccessful()) {
                    Toast.makeText(Settings.this, "We have sent you instructions to reset your password!", Toast.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(Settings.this, "Failed to send reset email!", Toast.LENGTH_SHORT).show();
                }
            }
        });
}

我假设“auth”在其他地方被正确实例化。

 类似资料:
  • 我只是在我的项目中添加了MVC 5的“忘记密码”部分,在收到邮件后我无法更改密码。 错误:在应用程序中= 在Visual Studio中= 错误来源代码: 我在stackoverflow和其他方面尝试了很多东西,但都没有成功。 如果你知道我为什么会出现这个错误:) 我使用在创建ASP时提出的基本模板。NET web app。我可以上传你想要的所有代码文件,只要问你需要什么帮助我,我会在2分钟内上传

  • 介绍 {tip} 想要快速上手? 只需在一个新的 Laravel 应用中运行 php artisan make:auth 命令,然后在浏览器中访问 http://your-app.dev/register 或分配给应用的任何别的 URL。这条命令将搭建起整个身份验证系统,包括重置密码! 大多数 Web 应用都为用户提供了重置密码的功能。相比强迫你在每个应用中都要重实现一遍此功能,Laravel 提

  • 我们已经讲解完了,如果创建,注册用户,激活,修改,删除用户了,看似已经全了,但是我们还缺了一点 那就是为用户提供重置密码! 这个是一个网站必不可少的功能之一吧 我们重置密码,在 sentry 中分成 两步 1、发送 重置代码给用户 2、验证 重置代码,成功则修改密码 首先我们看 第一步 获取重置密码的代码 try { // 根据 email 查找用户 $user = Sentry:

  • 本文向大家介绍MySQL重置root密码,包括了MySQL重置root密码的使用技巧和注意事项,需要的朋友参考一下 我们介绍一种无需密码的重置root密码的方式。 步骤如下: 1、打开配置文件/etc/my.cnf,在mysqld下添加一行skip-grant-tables,如下: 这样我们就可以免密登录MySQL了。 然后保存并退出。 2、重启MySQL 这两个命令2选1: 3、终端输入 mys

  • 我有一个Laravel 5.4应用程序,在我的管理区域有一个视图,允许我查看所有用户。 我想创建一个功能,允许我点击后端的一个按钮,自动发送默认的Laravel密码重置功能。 在我看来,我有以下几点: 在链接点击重置密码这当前通过我的路由点击以下功能 我不太熟悉Laravels的默认密码重置功能,因此我可能有点不熟悉,但我遇到以下错误: 传递给Illumb\Auth\Passwords\Passw

  • 我正在尝试使用文档在我的Laravel 5.1应用程序上重置密码。当我点击send password reset(发送密码重置)按钮时,会出现以下错误。 QueryException in Connection.php第651行:SQLSTATE[42S22]:未找到列:1054“where子句”中的未知列“email”(SQL:delete fromwhere=abc@abc.com).