当前位置: 首页 > 面试题库 >

java.lang.NullPointerException:尝试调用虚拟方法'java.lang.Stringcom.google.firebase.auth.FirebaseUser.getUid()'

骆雅昶
2023-03-14
问题内容

Process: com.example.vicevirus.myapplication, PID: 13471
java.lang.NullPointerException: Attempt to invoke virtual method ‘java.lang.String com.google.firebase.auth.FirebaseUser.getUid()’ on a null object reference
at com.example.vicevirus.myapplication.RegisterActivity$1.onComplete(RegisterActivity.java:48)
at com.google.android.gms.tasks.zzc$1.run(Unknown Source)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
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)

这是在android显示器上。我该如何解决?

package com.example.vicevirus.myapplication;

import android.app.ProgressDialog;
         import android.support.annotation.NonNull;
         import android.support.v7.app.AppCompatActivity;
         import android.os.Bundle;
         import android.view.View;
         import android.widget.EditText;
         import android.widget.Toast;
         import com.google.android.gms.tasks.OnCompleteListener;
         import com.google.android.gms.tasks.OnSuccessListener;
         import com.google.android.gms.tasks.Task;
         import com.google.firebase.auth.AuthResult;
         import com.google.firebase.auth.FirebaseAuth;
         import com.google.firebase.database.DatabaseReference;
         import com.google.firebase.database.FirebaseDatabase;

public class RegisterActivity extends AppCompatActivity {
    private EditText email,name,password;
    DatabaseReference databaseReference;
    FirebaseAuth mAuth;
    private DatabaseReference userIdRef;
    ProgressDialog registerDialog;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_register);
        email=(EditText)findViewById(R.id.email);
        name=(EditText)findViewById(R.id.name);
        password=(EditText)findViewById(R.id.password);
        databaseReference= FirebaseDatabase.getInstance().getReference().child("chat_users");
        mAuth=FirebaseAuth.getInstance();
        registerDialog=new ProgressDialog(this);
        registerDialog.setMessage("Registering..");
    }
    public void submit(View view) {
        registerDialog.show();
        mAuth.createUserWithEmailAndPassword(email.getText().toString(),password.getText().toString()).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
                if(task.isComplete())
                {
                    registerDialog.dismiss();
                    Toast.makeText(getApplicationContext(),"Registered successfully",Toast.LENGTH_SHORT).show();
                    userIdRef=databaseReference.child(mAuth.getCurrentUser().getUid());
                    userIdRef.child("name").setValue(name.getText().toString());
                    finish();
                }
                registerDialog.dismiss();
            }
        });
    }
}

问题答案:

问题似乎是您的用户尚未登录甚至尚未注册。因此,调用mAuth.getCurrentUser()返回null。

查阅FireBase文档的此页面,了解有关如何实现用户注册的信息。这可能是失败的。检查task.isSuccessful()是检查此项所必需的。



 类似资料:
  • 问题内容: 我正在尝试获取一些信息,但我的应用程序崩溃并显示以下消息: 这是代码: 这是一个纯课。的哪个调用不包含this 。我做错了吗?应始终位于内吗? 根据要求整体: 问题答案: 改成 您为布局充气。视图属于膨胀的布局。因此,使用view对象在中初始化视图 片段由活动主持 您可以在视图中使用和初始化 还在中初始化TextView 。由于Asynctask是一个内部类,因此您可以在那里更新ui

  • 问题内容: 我正在尝试将播放器的名称保存为共享的首选项,并通过再次以共享的首选项获取它的名称来使其显示在另一个活动中,但是我的应用程序崩溃了。 致命异常:主要 代码: 播放器 PlayGame.java PlayerName.java 问题答案: 您的应用在以下位置崩溃: 因为。 您忘记在PlayGame活动中进行初始化。

  • 当我运行我的应用程序时,我有一个异常显示,所以我想帮助我:)异常是:java。lang.NullPointerException:尝试调用虚拟方法“int java”。lang.String。空对象引用上的长度() 当我单击Login类中的dd1按钮和按钮实现(public void getData(View v))方法时,会显示异常 非常感谢。 登录类 HttpManager类 日志:

  • 问题内容: 有人可以帮我检查我的代码有什么问题吗?我有4个,并且它们的值已插入到中。现在我想将该项目检索到另一个旋转器中,但得到 我已经检查了每个步骤,但仍然无法找出问题所在。 更新.java 错误的LogCat 我有一个活动,其中有一个微调器,下面的代码对我来说很好用。 问题答案: *方法之一的参数是。正如您在摘录中看到的: …的check ,如果T不是a 或null ,则返回false 。由于

  • 问题内容: 运行我的项目时出现错误。 这是完整的日志: 这是我的ProductDetail.java 谁能告诉我错误在哪里以及如何解决?如果有人可以帮助我,我将非常感激。 问题答案: 您的字符串是这样给你一个。这是导致它的原因: 字符串是因为您没有从接收任何值。这可能是因为您忘记了传递以前的值。 但是,您可以检查一下String 是否存在,那么将不会执行这些操作。您可以通过以下方式做到这一点: 因

  • 问题内容: 我正在尝试在RecyclerView中实施滑动删除操作。除了在要刷卡的项目下方绘制一个删除图标外,其他一切似乎都工作正常。 这就是我的做法: 它在扔 java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法’boolean android.graphics.Bitmap.isRecycled()’ 全栈跟踪 第149行已调试,但我看到它为null,但