Android 从Firebase数据库检索数据时显示空指针异常。怎么用?

Android 从Firebase数据库检索数据时显示空指针异常。怎么用?,android,firebase,firebase-realtime-database,real-time-data,Android,Firebase,Firebase Realtime Database,Real Time Data,我正在从实时数据库中检索一些值,但每次它都显示空指针异常。实际上,我想从一个子系统访问所有数据,当数据通过数据库更改时,我还想获得数据的新更新。我的代码是这样的,在这段代码中,我想在文本视图中追加值,但显示空指针异常。请解决我的问题 db=FirebaseDatabase.getInstance(); dr=db.getReference().child("us"); dr.addValueEventListener(new ValueEventListener(

我正在从实时数据库中检索一些值,但每次它都显示空指针异常。实际上,我想从一个子系统访问所有数据,当数据通过数据库更改时,我还想获得数据的新更新。我的代码是这样的,在这段代码中,我想在文本视图中追加值,但显示空指针异常。请解决我的问题

 db=FirebaseDatabase.getInstance();
        dr=db.getReference().child("us");

      dr.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
                    txtMsg.append((CharSequence) postSnapshot.child("name").getValue());
                }
            }

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

            }
        });
我的日志是:

0.481 31984-32018/com.thebhakti E/GED: Failed to get GED Log Buf, err(0)
09-02 16:51:11.891 31984-32036/com.thebhakti E/NativeCrypto: ssl=0xb7352a78 cert_verify_callback x509_store_ctx=0xa0aa11d0 arg=0x0
09-02 16:51:11.891 31984-32036/com.thebhakti E/NativeCrypto: ssl=0xb7352a78 cert_verify_callback calling verifyCertificateChain authMethod=ECDHE_RSA
09-02 16:51:14.579 31984-31984/com.thebhakti E/AndroidRuntime: FATAL EXCEPTION: main
                                                               Process: com.thebhakti, PID: 31984
                                                               java.lang.NullPointerException: Attempt to invoke interface method 'int java.lang.CharSequence.length()' on a null object reference
                                                                   at android.widget.TextView.append(TextView.java:3643)
                                                                   at com.thebhakti.RealtimeMain$2.onDataChange(RealtimeMain.java:71)
                                                                   at com.google.android.gms.internal.firebase_database.zzfc.zza(Unknown Source)
                                                                   at com.google.android.gms.internal.firebase_database.zzgx.zzdr(Unknown Source)
                                                                   at com.google.android.gms.internal.firebase_database.zzhd.run(Unknown Source)
                                                                   at android.os.Handler.handleCallback(Handler.java:815)
                                                                   at android.os.Handler.dispatchMessage(Handler.java:104)
                                                                   at android.os.Looper.loop(Looper.java:194)
                                                                   at android.app.ActivityThread.main(ActivityThread.java:5643)
                                                                   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:960)
                                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)

正如您所说,当数据库中的数据发生更改时,您希望更新
TextView txtMsg
中的数据。因此,您使用的方法将给出以下不合适的结果

我正在考虑单一名称,即Akshay

txtMsg.append((CharSequence) postSnapshot.child("name").getValue());
它将给出结果-阿克谢

假设你把名字从Akshay改为Punitt。因此名称Punitt将被添加到txtMsg中&结果将是-

阿克沙伊普特

但正确的方法是让普尼特取代阿克谢。因此,您应该使用方法
setText()
,如图所示-

txtMsg.setText(postSnapshot.child("name").getValue().toString());

不要撒谎。请检查logcat的行号和空对象。我已经在POST中上传了我的logcat,如果我删除了CharSequence,那么它会显示错误,所以我如何从数据库中检索值。或者此代码中的任何必要修改,您可以使用childEventListner而不是valueEventListnerValue of
postSnapshot.child(“name”).getValue()的值为
null
,因此您无法从数据库获取数据。
This is not a proper way, use model class to retrieve a data.
please refer this link