Java 来自firebase数据库的imageURI崩溃

Java 来自firebase数据库的imageURI崩溃,java,android,firebase,nullpointerexception,Java,Android,Firebase,Nullpointerexception,我正在构建一个简单的消息应用程序,目前我想查看用户文本旁边的图像。 我正在尝试从firebase数据库获取用户图像。 然而,每当我试图获取图像的value()时,应用程序就会崩溃。 如果我选择用一个图像链接替换imageURI,那么我发现它可以与该链接一起工作 08-27 23:14:02.392 4817-4817/com.myproj.blogapp E/UncaughtException: java.lang.NullPointerException: Attempt to invoke

我正在构建一个简单的消息应用程序,目前我想查看用户文本旁边的图像。
我正在尝试从firebase数据库获取用户图像。
然而,每当我试图获取图像的value()时,应用程序就会崩溃。
如果我选择用一个图像链接替换imageURI,那么我发现它可以与该链接一起工作

08-27 23:14:02.392 4817-4817/com.myproj.blogapp E/UncaughtException: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference
                                                                         at com.myproj.blogapp.MessageAdapter$1.onDataChange(MessageAdapter.java:79)
                                                                         at com.google.android.gms.internal.to.zza(Unknown Source)
                                                                         at com.google.android.gms.internal.vj.zzHX(Unknown Source)
                                                                         at com.google.android.gms.internal.vp.run(Unknown Source)
                                                                         at android.os.Handler.handleCallback(Handler.java:739)
                                                                         at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                         at android.os.Looper.loop(Looper.java:145)
                                                                         at android.app.ActivityThread.main(ActivityThread.java:5938)
                                                                         at java.lang.reflect.Method.invoke(Native Method)
                                                                         at java.lang.reflect.Method.invoke(Method.java:372)
                                                                         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1400)


您的数据不完整。看看生锈的用户。它没有图像

您必须在
getChild(字符串路径)
之后使用适当的空检查,然后才能对其进行字符串化

或者在获取之前使用
hasChild(字符串路径)

在值为NULL或子不存在的情况下,您可能需要考虑默认图像

注意:您可以对子项使用
getValue(String.class)
,而不是使用
toString
,或者对整个初始快照使用POJO,而不是获取单个子项


您还需要实现
onCancelled
,这样您就可以看到您的Firebase错误

错误清楚地表明您正在MessageAdapter.java行79中获取NPE。请在您读取数据库的位置显示数据库的内容。我已经添加了数据库的图像。在您的数据中,用户名为“rust”没有图像字段。@algrid啊,谢谢!但出于某种原因,我没有得到链接的图像。相反,当出现错误时,我会得到一个图像。
@Override
public void onBindViewHolder(final MessageViewHolder viewHolder, final int index) {

    final Message c = messagesList.get(index);

    final String sender = c.getFrom();
    databaseReference = FirebaseDatabase.getInstance().getReference().child("Users").child(sender);
    databaseReference.addValueEventListener(new ValueEventListener() {

        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {


            imageUrl = dataSnapshot.child("image").getValue().toString(); //error on this line
            viewHolder.setUserimage(context,imageUrl);


            String name = dataSnapshot.child("name").getValue().toString();
            viewHolder.displayName.setText(name);

        }
        @Override
        public void onCancelled(DatabaseError databaseError) {
        }

    });

    viewHolder.messageText.setText(c.getMessage());
    viewHolder.time.setText(EpochtimeToDateAndTimeString(c.getTime()));
}