NullPointerException при отправке подтверждения по электронной почте, Android студия с Google Firebase - PullRequest
0 голосов
/ 22 февраля 2020

Итак, мой код работал нормально, пока я не начал заниматься другими делами. После того, как я снова запустил свой проект, чтобы попытаться зарегистрировать его, отобразилась эта ошибка

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.ius, PID: 19023
java.lang.NullPointerException: Attempt to invoke virtual method 'com.google.android.gms.tasks.Task com.google.firebase.auth.FirebaseUser.sendEmailVerification()' on a null object reference
    at com.example.ius.Registracija$2.onComplete(Registracija.java:92)
    at com.google.android.gms.tasks.zzj.run(Unknown Source:4)
    at android.os.Handler.handleCallback(Handler.java:873)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:201)
    at android.app.ActivityThread.main(ActivityThread.java:6806)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)

. Вот мой код, в котором это показывает проблему:

firebaseAuth.createUserWithEmailAndPassword(emailS,passwordS).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
       @Override
       public void onComplete(@NonNull Task<AuthResult> task) {
           if(task.isSuccessful()){
               user.sendEmailVerification()
                       .addOnCompleteListener(new OnCompleteListener<Void>() {
                           @Override
                           public void onComplete(@NonNull Task<Void> task) {
                               if (task.isSuccessful()) {
                                   Toast.makeText(Registracija.this, "Registered successfully, Please verify your email", Toast.LENGTH_SHORT).show();
                                   dialog.dismiss();
                                   startActivity(new Intent(Registracija.this,MainActivity.class));
                               }
                           }
                       });
           }
           else {
               Toast.makeText(Registracija.this, "An error occurred please try again", Toast.LENGTH_SHORT).show();
               dialog.dismiss();
               return;
           }
       }
   });

Я думал, что проблема была, когда я менял переменные идентификатор, потому что по какой-то причине идентификатор для электронной почты в 2 действия были связаны. Любая помощь / совет будет здорово, заранее спасибо: D

Ответы [ 2 ]

1 голос
/ 22 февраля 2020

user равно нулю, поэтому попробуйте следующее:

firebaseAuth.createUserWithEmailAndPassword(emailS,passwordS).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
       @Override
       public void onComplete(@NonNull Task<AuthResult> task) {
           if(task.isSuccessful()){
              FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
              user.sendEmailVerification()
                       .addOnCompleteListener(new OnCompleteListener<Void>() {
                           @Override
                           public void onComplete(@NonNull Task<Void> task) {

Используйте getCurrentUser(), чтобы получить зарегистрированного пользователя, а затем вызвать метод.

0 голосов
/ 22 февраля 2020

Вы звоните user.sendEmailVerification() и, по-видимому, user - ноль. После того, как вы создали нового пользователя, вы должны прочитать пользователя из AuthResult задачи.

if(task.isSuccessful()){
    task.getResult().getUser().sendEmailVerification()
...