为了账号安全,请及时绑定邮箱和手机立即绑定

android firebase 数据库 java.lang.String java.lang

android firebase 数据库 java.lang.String java.lang

富国沪深 2021-12-30 20:47:20
请在这里帮忙(面试前)我正在尝试上传图像,当它开始上传时,它会崩溃并删除两个基本的孩子(图像,拇指图像)E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.pc.newchatj, PID: 9350 java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a com.example.pc.newchatj.SettingsActivity$1.onDataChange(SettingsActivity.java:103) 处的空对象引用 com.google.firebase.database.core.ValueEventRegistration.fireEvent(com.google.firebase:firebase-database@@16.0 .4:75) 在 com.google.firebase.database.core.view.DataEvent.fire(com.google.firebase:firebase-database@@16.0.4:63) 在 com.google.firebase.database.core。 view.EventRaiser$1.run(com.google.firebase:firebase-database@@16.0.4:55) 在 android.os.Handler.handleCallback(Handler.java:739) 在 android.os.Handler.dispatchMessage(Handler. java:95) 在 android.os。Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5254) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke( Method.java:372) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)在我的 Firebase 数据库中,它删除了两个孩子的 (image , thumb_image)任何人请帮忙mUserDatabase.addValueEventListener(new ValueEventListener() {        @Override        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {            String name = dataSnapshot.child("name").getValue().toString();            String image = dataSnapshot.child("image").getValue().toString();            String status = dataSnapshot.child("status").getValue().toString();            String thumb_image = dataSnapshot.child("thumb_image").getValue().toString();            mName.setText(name);            mStatus.setText(status);            if (!image.equals("default")) {                Picasso.get().load(image).placeholder(R.drawable.default_avatar).into(mDisplayImage);            }        }        @Override        public void onCancelled(@NonNull DatabaseError databaseError) {        }    });
查看完整描述

3 回答

?
慕码人8056858

TA贡献1803条经验 获得超6个赞

正如你写的 NullPointerException 上升

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

错误消息说您尝试.toString()在空对象上调用。您应该String name = dataSnapshot.child("name").getValue()在调用.toSring()方法之前保存结果并检查它是否为空。


查看完整回答
反对 回复 2021-12-30
?
智慧大石

TA贡献1946条经验 获得超3个赞

在尝试从dataSnapshot对象获取数据之前,您应该检查该数据是否确实存在:


mUserDatabase.addValueEventListener(new ValueEventListener() {

    @Override

    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

        if (dataSnapshot.exists()) { //Check for existens

            String name = dataSnapshot.child("name").getValue(String.class);

            String image = dataSnapshot.child("image").getValue(String.class);

            String status = dataSnapshot.child("status").getValue(String.class);

            String thumb_image = dataSnapshot.child("thumb_image").getValue(String.class);


            mName.setText(name);

            mStatus.setText(status);


            if (!image.equals("default")) {

                Picasso.get().load(image).placeholder(R.drawable.default_avatar).into(mDisplayImage);

            }   

        }

    }


    @Override

    public void onCancelled(@NonNull DatabaseError databaseError) {

        Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!

    }

});

也最好传递String.class给将getValue()其转换为 String 的方法。你不会再得到任何东西NullPointerException了。


查看完整回答
反对 回复 2021-12-30
?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

用它


store.setUrl((String) snapshot1.child("url").getValue());

store.setName((String) snapshot1.child("name").getValue());

代替


store.setUrl(snapshot1.child("url").getValue().toString());

store.setName(snapshot1.child("name").getValue().toString());


查看完整回答
反对 回复 2021-12-30
  • 3 回答
  • 0 关注
  • 142 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信