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

在alertDialog box中使用getUid()从firebase检索数据

司寇经亘
2023-03-14

想要从Firebase数据库中检索用户名及其联系电话。我试着这样做,但在logcat它抛出一个空指针

Logcat:-进程:com。实例巴维亚。epark,PID:27351 java。lang.NullPointerException:尝试调用虚拟方法“java”。String.com。实例巴维亚。埃帕克。用户注册。com上的空对象引用上的getName()。实例巴维亚。埃帕克。地图选择$1$1。com上的onDataChange(MapSelect.java:51)。谷歌。火基。数据库模糊的。扎普。zza(com.google.firebase:firebase数据库@@16.0.3:75)位于com.google.火基。数据库模糊的。zzca。zza(com.google.firebase:firebase数据库@@16.0.3:63)位于。谷歌。火基。数据库模糊的。zzcd$1。在android上运行(com.google.firebase:firebase数据库@@16.0.3:55)。操作系统。处理程序。android上的handleCallback(Handler.java:873)。操作系统。处理程序。android上的dispatchMessage(Handler.java:99)。操作系统。活套。android上的loop(Looper.java:193)。应用程序。活动线程。java上的main(ActivityThread.java:6669)。朗。反思。方法在com上调用(本机方法)。Android内部的操作系统。RuntimeInit$MethodAndArgsCaller。在com上运行(RuntimeInit.java:493)。Android内部的操作系统。合子体。main(ZygoteInit.java:858)

地图选择。JAVA

          mAuth = FirebaseAuth.getInstance();
                udetail = FirebaseDatabase.getInstance();
                DatabaseReference databaseReference = udetail.getReference(mAuth.getUid());
                databaseReference.addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                        userreg userprofile = dataSnapshot.getValue(userreg.class);
                        alertDialog1.setMessage("Name is:" + userprofile.getName());
                        alertDialog1.setMessage("Your Contact No:" + userprofile.getPnum());
                        alertDialog1.setMessage("Your Vehicle No is:" + userprofile.getVeclno());
                        alertDialog1.show();
                    }

                    @Override
                    public void onCancelled(DatabaseError databaseError) {
                        Toast.makeText(MapSelect.this,databaseError.getCode(),Toast.LENGTH_SHORT).show();
                    }
                });

用户注册。JAVA

包com。实例巴维亚。epark;

公共类userreg{公共字符串名,mailid,pnum,veclno;

public userreg(){

}


public userreg(String name,String mailid,String pnum,String veclno){
    this.name=name;
    this.mailid=mailid;
    this.pnum=pnum;
    this.veclno=veclno;

}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getMailid() {
    return mailid;
}

public void setMailid(String mailid) {
    this.mailid = mailid;
}

public String getPnum() {
    return pnum;
}

public void setPnum(String pnum) {
    this.pnum = pnum;
}

public String getVeclno() {
    return veclno;
}

public void setVeclno(String veclno) {
    this.veclno = veclno;
}

}

数据库结构:-

图像参考https://i.stack.imgur.com/owWJr.jpg

共有1个答案

周弘盛
2023-03-14

您指向错误的数据库引用。数据库中有一个名为Users的节点,但代码中没有。

而不是

DatabaseReference databaseReference = udetail.getReference(mAuth.getUid());
databaseReference.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    userreg userprofile = dataSnapshot.getValue(userreg.class);
                    alertDialog1.setMessage("Name is:" + userprofile.getName());
                    alertDialog1.setMessage("Your Contact No:" + userprofile.getPnum());
                    alertDialog1.setMessage("Your Vehicle No is:" + userprofile.getVeclno());
                    alertDialog1.show();
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {
                    Toast.makeText(MapSelect.this,databaseError.getCode(),Toast.LENGTH_SHORT).show();
                }
            });

使用

DatabaseReference databaseReference = udetail.getReference().child("Users");

databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
    for (DataSnapshot messageSnapshot: dataSnapshot.getChildren()) {
        userreg userprofile = messageSnapshot.getValue(userreg.class);
        Log.v("info",String.valueOf(userprofile));
    }
        //Do whatever you like to do with your data here
}


@Override
public void onCancelled(DatabaseError databaseError) {
                Toast.makeText(MapSelect.this,databaseError.getMessage(),Toast.LENGTH_SHORT).show();
            }
});
 类似资料:
  • 我试图实现一对一聊天使用firebase实时数据库,我插入消息与senderid,Recieverid,消息,日期,sendername,Recievername,在我的情况下,不同的用户是不同的聊天室,我需要展示这个聊天室一对一聊天室我如何实现在我的android应用程序 下面是我检索数据的代码 但这段代码从聊天室获取所有数据,但我需要排除发送者名和接收者名相等的消息,sendername是从应

  • 我正在尝试从cloud Firestore的Flutter中的以下路径获取数据,我有以下结构 followers/{currentuser}/userfollower/{user_id} 用户/user_id/user_details 我正在尝试获取当前用户的所有关注者的详细信息。有人能帮忙吗? 我能得到第一部分是因为 我不知道如何循环通过所有id从用户集合中获取数据。我尝试了以下代码,但没有成功

  • 问题内容: 我正在法国学习,所以很难找到法语教程来解决我的问题。因此,我不得不问我的问题,希望有一个令人满意的解决方案。 我的问题是我在firebase上读取数据时遇到了麻烦,并且花了三天时间。 我有这样的结构: 我已经开始编写一些代码,可以恢复密钥,但是无法恢复这些值“ nom”,“ argent”等。 问题答案: John的替代方法是使用来获取每个属性:

  • 我正在两个标记之间画一条路线,我想保存那条路线。为此,我将包含lat和lng的ArrayList保存在Firebase数据库中。但我在取回航路点时遇到了问题。我是这样插入的: 在检索数据时,我尝试执行以下操作:

  • 我对Firebase和Android是新手。我已经在我的Firebase帐户中存储了用户身份验证详细信息(姓名、个人资料图像而不是电子邮件ID)。我想检索那些数据(如姓名等)到我的应用程序的其他部分。如何检索实时数据库子值?

  • 我试图创建一个简单的程序,从用户的名字,手机号码和电子邮件地址,然后把数据在Firebase实时数据库。 有3个输入框和一个按钮,按一下就可以完成上面的操作。代码如下: 我这样设置了消防基地: