如何从Firebase获取数据并在Android中显示

发布于 2025-02-10 15:37:35 字数 12687 浏览 1 评论 0原文

我需要从Firebase获取数据的帮助。我已经工作了几个小时,但仍然无法正确。

我不明白的是抛出无效的错误或其他错误。 我承认我对Java或Android没有任何经验,这是我第一次尝试进行简单的数据库操作。

任何帮助我理解的帮助都非常感谢

编辑 我将数据库引用修改为:

fDatabase = FirebaseDatabase.getInstance().getReference().child("pelanggan").child("nama");

这是我的数据库结构

这是我的 activitive> activity activity activity < /strong>:

package com.example.training;

import android.os.Bundle;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import com.example.training.model.pelanggan;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;


public class orderActivity extends AppCompatActivity{
    private Button submitOrder;
    DatabaseReference fDatabase;
    private TextView retrieveTV;

    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.order_activity);

        fDatabase = FirebaseDatabase.getInstance().getReference().child("pelanggan").child("nama");
        retrieveTV = findViewById(R.id.idTVRetrieveData);

        getname();
    }

    private void getname() {
        fDatabase.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                String results = dataSnapshot.getValue(String.class);;

                retrieveTV.setText(results);
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {
                Toast.makeText(orderActivity.this, "Fail to get data.", Toast.LENGTH_SHORT).show();
            }
        });
    }

}

我也有一个模型类

package com.example.training.model;

import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

public class pelanggan {
    @SerializedName("ID")
    @Expose
    private String ID;

    @SerializedName("Nama")
    @Expose
    private String Nama;

    @SerializedName("Alamat")
    @Expose
    private String Alamat;

    @SerializedName("Ruang")
    @Expose
    private String Ruang;

    //Constructor
    public pelanggan (){}

    public pelanggan (String Nama, String Alamat, String Ruang){
        this.Nama = Nama;
        this.Alamat = Alamat;
        this.Ruang = Ruang;
    }

    public String getNama() {return Nama;}

    public String getAlamat() {return  Alamat;}

    public String getRuang() {return Ruang;}
}

我也尝试过这样做,但是给我nullpointer异常 替代版本

private void getname() {
        fDatabase.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                pelanggan pelanggan = dataSnapshot.getValue(pelanggan.class);
                String nama = pelanggan.getNama();

                retrieveTV.setText(nama);
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {
                Toast.makeText(orderActivity.this, "Fail to get data.", Toast.LENGTH_SHORT).show();
            }
        });
    }

这是我的 logtcat

2022-06-26 14:24:03.006 20151-20151/? I/xample.trainin: Late-enabling -Xcheck:jni
2022-06-26 14:24:03.033 20151-20151/? E/xample.trainin: Unknown bits set in runtime_flags: 0x48000
2022-06-26 14:24:03.537 20151-20151/com.example.training I/Perf: Connecting to perf service.
2022-06-26 14:24:03.574 20151-20151/com.example.training I/FirebaseApp: Device unlocked: initializing all Firebase APIs for app [DEFAULT]
2022-06-26 14:24:03.599 20151-20151/com.example.training I/FirebaseCrashlytics: Initializing Firebase Crashlytics 18.2.11 for com.example.training
2022-06-26 14:24:03.604 20151-20186/com.example.training I/DynamiteModule: Considering local module com.google.android.gms.measurement.dynamite:73 and remote module com.google.android.gms.measurement.dynamite:74
2022-06-26 14:24:03.604 20151-20186/com.example.training I/DynamiteModule: Selected remote version of com.google.android.gms.measurement.dynamite, version >= 74
2022-06-26 14:24:03.605 20151-20186/com.example.training V/DynamiteModule: Dynamite loader version >= 2, using loadModule2NoCrashUtils
2022-06-26 14:24:03.635 20151-20186/com.example.training W/xample.trainin: ClassLoaderContext type mismatch. expected=PCL, found=DLC (PCL[] | DLC[];PCL[/data/app/com.example.training-cGP13cDlR449jFz3H3Slsw==/base.apk*196330711:/data/app/com.example.training-cGP13cDlR449jFz3H3Slsw==/base.apk!classes2.dex*3787358178:/data/app/com.example.training-cGP13cDlR449jFz3H3Slsw==/base.apk!classes3.dex*1858276209:/data/app/com.example.training-cGP13cDlR449jFz3H3Slsw==/base.apk!classes4.dex*1863173146])
2022-06-26 14:24:03.635 20151-20186/com.example.training W/xample.trainin: Found duplicate classes, falling back to extracting from APK : /data/user_de/0/com.google.android.gms/app_chimera/m/000000af/MeasurementDynamite.apk
2022-06-26 14:24:03.635 20151-20186/com.example.training W/xample.trainin: NOTE: This wastes RAM and hurts startup performance.
2022-06-26 14:24:03.635 20151-20186/com.example.training W/xample.trainin: Found duplicated class when checking oat files: 'Landroid/support/v4/app/RemoteActionCompatParcelizer;' in /data/app/com.example.training-cGP13cDlR449jFz3H3Slsw==/base.apk and /data/user_de/0/com.google.android.gms/app_chimera/m/000000af/MeasurementDynamite.apk
2022-06-26 14:24:03.635 20151-20186/com.example.training W/xample.trainin: 
2022-06-26 14:24:03.736 20151-20151/com.example.training I/FirebaseInitProvider: FirebaseApp initialization successful
2022-06-26 14:24:03.744 20151-20196/com.example.training V/FA: App measurement collection enabled
2022-06-26 14:24:03.745 20151-20196/com.example.training V/FA: App measurement enabled for app package, google app id: com.example.training, 1:44525531754:android:c57282d36986f9bcb05013
2022-06-26 14:24:03.746 20151-20196/com.example.training I/FA: App measurement initialized, version: 65003
2022-06-26 14:24:03.746 20151-20196/com.example.training I/FA: To enable debug logging run: adb shell setprop log.tag.FA VERBOSE
2022-06-26 14:24:03.746 20151-20196/com.example.training I/FA: To enable faster debug mode event logging run:
      adb shell setprop debug.firebase.analytics.app com.example.training
2022-06-26 14:24:03.746 20151-20196/com.example.training D/FA: Debug-level message logging enabled
2022-06-26 14:24:03.757 20151-20151/com.example.training I/FeatureParser: can't find citrus.xml in assets/device_features/,it may be in /vendor/etc/device_features
2022-06-26 14:24:03.773 20151-20151/com.example.training E/libc: Access denied finding property "ro.vendor.df.effect.conflict"
2022-06-26 14:24:03.759 20151-20151/com.example.training W/xample.training: type=1400 audit(0.0:456294): avc: denied { read } for name="u:object_r:vendor_default_prop:s0" dev="tmpfs" ino=16963 scontext=u:r:untrusted_app:s0:c61,c257,c512,c768 tcontext=u:object_r:vendor_default_prop:s0 tclass=file permissive=0
2022-06-26 14:24:03.774 20151-20151/com.example.training E/libc: Access denied finding property "ro.vendor.knock.type"
2022-06-26 14:24:03.759 20151-20151/com.example.training W/xample.training: type=1400 audit(0.0:456295): avc: denied { read } for name="u:object_r:vendor_default_prop:s0" dev="tmpfs" ino=16963 scontext=u:r:untrusted_app:s0:c61,c257,c512,c768 tcontext=u:object_r:vendor_default_prop:s0 tclass=file permissive=0
2022-06-26 14:24:03.786 20151-20196/com.example.training V/FA: Connecting to remote service
2022-06-26 14:24:03.799 20151-20196/com.example.training V/FA: Connection attempt already in progress
2022-06-26 14:24:03.806 20151-20196/com.example.training V/FA: Connection attempt already in progress
2022-06-26 14:24:03.860 20151-20186/com.example.training V/FA: onActivityCreated
2022-06-26 14:24:03.948 20151-20151/com.example.training W/xample.trainin: Accessing hidden method Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z (greylist, reflection, allowed)
2022-06-26 14:24:03.949 20151-20151/com.example.training W/xample.trainin: Accessing hidden method Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V (greylist, reflection, allowed)
2022-06-26 14:24:04.106 20151-20196/com.example.training V/FA: Activity resumed, time: 4280644798
2022-06-26 14:24:04.111 20151-20196/com.example.training I/FA: Tag Manager is not found and thus will not be used
2022-06-26 14:24:04.132 20151-20151/com.example.training W/Looper: PerfMonitor looperActivity : package=com.example.training/.orderActivity time=355ms latency=679ms running=325ms  procState=2 ClientTransaction{ callbacks=[android.app.servertransaction.LaunchActivityItem] lifecycleRequest=android.app.servertransaction.ResumeActivityItem } historyMsgCount=1 (msgIndex=1 wall=705ms seq=2 running=651ms runnable=8ms late=2ms h=android.app.ActivityThread$H w=110)
2022-06-26 14:24:04.133 20151-20151/com.example.training W/Looper: PerfMonitor looperActivity : package=com.example.training/.orderActivity time=0ms latency=1034ms running=0ms  procState=2 ClientTransaction{ callbacks=[android.app.servertransaction.TopResumedActivityChangeItem] } historyMsgCount=2 (msgIndex=1 wall=705ms seq=2 running=651ms runnable=8ms late=2ms h=android.app.ActivityThread$H w=110) (msgIndex=2 wall=355ms seq=3 running=325ms runnable=9ms late=679ms h=android.app.ActivityThread$H w=159)
2022-06-26 14:24:04.136 20151-20196/com.example.training V/FA: Connection attempt already in progress
2022-06-26 14:24:04.138 20151-20196/com.example.training V/FA: Connection attempt already in progress
2022-06-26 14:24:04.154 20151-20208/com.example.training D/NetworkSecurityConfig: No Network Security Config specified, using platform default
2022-06-26 14:24:04.180 20151-20203/com.example.training I/AdrenoGLES-0: QUALCOMM build                   : 243b6bc, I98aee2b40e
    Build Date                       : 12/08/20
    OpenGL ES Shader Compiler Version: EV031.29.00.16
    Local Branch                     : 
    Remote Branch                    : refs/tags/AU_LINUX_ANDROID_LA.UM.8.15.R1.10.00.00.643.066
    Remote Branch                    : NONE
    Reconstruct Branch               : NOTHING
2022-06-26 14:24:04.180 20151-20203/com.example.training I/AdrenoGLES-0: Build Config                     : S P 8.0.16 AArch64
2022-06-26 14:24:04.180 20151-20203/com.example.training I/AdrenoGLES-0: Driver Path                      : /vendor/lib64/egl/libGLESv2_adreno.so
2022-06-26 14:24:04.186 20151-20203/com.example.training I/AdrenoGLES-0: PFP: 0x016ee188, ME: 0x00000000
2022-06-26 14:24:04.276 20151-20196/com.example.training D/FA: Connected to remote service
2022-06-26 14:24:04.278 20151-20196/com.example.training V/FA: Processing queued up service tasks: 5
2022-06-26 14:24:09.346 20151-20196/com.example.training V/FA: Inactivity, disconnecting from the service

这是logcat,其中有nullpointer例外,我将仅复制粘贴红色字母

E/libc: Access denied finding property "ro.vendor.df.effect.conflict"
E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.training, PID: 22287
    java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.example.training.model.pelanggan.getNama()' on a null object reference
        at com.example.training.orderActivity$1.onDataChange(orderActivity.java:38)
        at com.google.firebase.database.core.ValueEventRegistration.fireEvent(ValueEventRegistration.java:75)
        at com.google.firebase.database.core.view.DataEvent.fire(DataEvent.java:63)
        at com.google.firebase.database.core.view.EventRaiser$1.run(EventRaiser.java:55)
        at android.os.Handler.handleCallback(Handler.java:883)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:226)
        at android.app.ActivityThread.main(ActivityThread.java:7592)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)

此logcat仅在时才在我使用替代版本,它的力量关闭了应用程序,与第一个代码不同

I need help with getting data from Firebase. I've been working for a few hours and still can't get it right.

It's either throw a Nullpointer or another error I don't understand.
I admit I don't have any experience in Java or Android and this is my first attempt to make a simple database operation.

any help to help me understand is very appreciated

EDIT
I modified my database reference into :

fDatabase = FirebaseDatabase.getInstance().getReference().child("pelanggan").child("nama");

here is my database structure

here is my Acitivity :

package com.example.training;

import android.os.Bundle;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import com.example.training.model.pelanggan;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;


public class orderActivity extends AppCompatActivity{
    private Button submitOrder;
    DatabaseReference fDatabase;
    private TextView retrieveTV;

    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.order_activity);

        fDatabase = FirebaseDatabase.getInstance().getReference().child("pelanggan").child("nama");
        retrieveTV = findViewById(R.id.idTVRetrieveData);

        getname();
    }

    private void getname() {
        fDatabase.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                String results = dataSnapshot.getValue(String.class);;

                retrieveTV.setText(results);
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {
                Toast.makeText(orderActivity.this, "Fail to get data.", Toast.LENGTH_SHORT).show();
            }
        });
    }

}

I also have a model class

package com.example.training.model;

import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

public class pelanggan {
    @SerializedName("ID")
    @Expose
    private String ID;

    @SerializedName("Nama")
    @Expose
    private String Nama;

    @SerializedName("Alamat")
    @Expose
    private String Alamat;

    @SerializedName("Ruang")
    @Expose
    private String Ruang;

    //Constructor
    public pelanggan (){}

    public pelanggan (String Nama, String Alamat, String Ruang){
        this.Nama = Nama;
        this.Alamat = Alamat;
        this.Ruang = Ruang;
    }

    public String getNama() {return Nama;}

    public String getAlamat() {return  Alamat;}

    public String getRuang() {return Ruang;}
}

I have tried doing it like this too, but instead give me nullpointer exception
Alternate version

private void getname() {
        fDatabase.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                pelanggan pelanggan = dataSnapshot.getValue(pelanggan.class);
                String nama = pelanggan.getNama();

                retrieveTV.setText(nama);
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {
                Toast.makeText(orderActivity.this, "Fail to get data.", Toast.LENGTH_SHORT).show();
            }
        });
    }

This is my LOGTCAT

2022-06-26 14:24:03.006 20151-20151/? I/xample.trainin: Late-enabling -Xcheck:jni
2022-06-26 14:24:03.033 20151-20151/? E/xample.trainin: Unknown bits set in runtime_flags: 0x48000
2022-06-26 14:24:03.537 20151-20151/com.example.training I/Perf: Connecting to perf service.
2022-06-26 14:24:03.574 20151-20151/com.example.training I/FirebaseApp: Device unlocked: initializing all Firebase APIs for app [DEFAULT]
2022-06-26 14:24:03.599 20151-20151/com.example.training I/FirebaseCrashlytics: Initializing Firebase Crashlytics 18.2.11 for com.example.training
2022-06-26 14:24:03.604 20151-20186/com.example.training I/DynamiteModule: Considering local module com.google.android.gms.measurement.dynamite:73 and remote module com.google.android.gms.measurement.dynamite:74
2022-06-26 14:24:03.604 20151-20186/com.example.training I/DynamiteModule: Selected remote version of com.google.android.gms.measurement.dynamite, version >= 74
2022-06-26 14:24:03.605 20151-20186/com.example.training V/DynamiteModule: Dynamite loader version >= 2, using loadModule2NoCrashUtils
2022-06-26 14:24:03.635 20151-20186/com.example.training W/xample.trainin: ClassLoaderContext type mismatch. expected=PCL, found=DLC (PCL[] | DLC[];PCL[/data/app/com.example.training-cGP13cDlR449jFz3H3Slsw==/base.apk*196330711:/data/app/com.example.training-cGP13cDlR449jFz3H3Slsw==/base.apk!classes2.dex*3787358178:/data/app/com.example.training-cGP13cDlR449jFz3H3Slsw==/base.apk!classes3.dex*1858276209:/data/app/com.example.training-cGP13cDlR449jFz3H3Slsw==/base.apk!classes4.dex*1863173146])
2022-06-26 14:24:03.635 20151-20186/com.example.training W/xample.trainin: Found duplicate classes, falling back to extracting from APK : /data/user_de/0/com.google.android.gms/app_chimera/m/000000af/MeasurementDynamite.apk
2022-06-26 14:24:03.635 20151-20186/com.example.training W/xample.trainin: NOTE: This wastes RAM and hurts startup performance.
2022-06-26 14:24:03.635 20151-20186/com.example.training W/xample.trainin: Found duplicated class when checking oat files: 'Landroid/support/v4/app/RemoteActionCompatParcelizer;' in /data/app/com.example.training-cGP13cDlR449jFz3H3Slsw==/base.apk and /data/user_de/0/com.google.android.gms/app_chimera/m/000000af/MeasurementDynamite.apk
2022-06-26 14:24:03.635 20151-20186/com.example.training W/xample.trainin: 
2022-06-26 14:24:03.736 20151-20151/com.example.training I/FirebaseInitProvider: FirebaseApp initialization successful
2022-06-26 14:24:03.744 20151-20196/com.example.training V/FA: App measurement collection enabled
2022-06-26 14:24:03.745 20151-20196/com.example.training V/FA: App measurement enabled for app package, google app id: com.example.training, 1:44525531754:android:c57282d36986f9bcb05013
2022-06-26 14:24:03.746 20151-20196/com.example.training I/FA: App measurement initialized, version: 65003
2022-06-26 14:24:03.746 20151-20196/com.example.training I/FA: To enable debug logging run: adb shell setprop log.tag.FA VERBOSE
2022-06-26 14:24:03.746 20151-20196/com.example.training I/FA: To enable faster debug mode event logging run:
      adb shell setprop debug.firebase.analytics.app com.example.training
2022-06-26 14:24:03.746 20151-20196/com.example.training D/FA: Debug-level message logging enabled
2022-06-26 14:24:03.757 20151-20151/com.example.training I/FeatureParser: can't find citrus.xml in assets/device_features/,it may be in /vendor/etc/device_features
2022-06-26 14:24:03.773 20151-20151/com.example.training E/libc: Access denied finding property "ro.vendor.df.effect.conflict"
2022-06-26 14:24:03.759 20151-20151/com.example.training W/xample.training: type=1400 audit(0.0:456294): avc: denied { read } for name="u:object_r:vendor_default_prop:s0" dev="tmpfs" ino=16963 scontext=u:r:untrusted_app:s0:c61,c257,c512,c768 tcontext=u:object_r:vendor_default_prop:s0 tclass=file permissive=0
2022-06-26 14:24:03.774 20151-20151/com.example.training E/libc: Access denied finding property "ro.vendor.knock.type"
2022-06-26 14:24:03.759 20151-20151/com.example.training W/xample.training: type=1400 audit(0.0:456295): avc: denied { read } for name="u:object_r:vendor_default_prop:s0" dev="tmpfs" ino=16963 scontext=u:r:untrusted_app:s0:c61,c257,c512,c768 tcontext=u:object_r:vendor_default_prop:s0 tclass=file permissive=0
2022-06-26 14:24:03.786 20151-20196/com.example.training V/FA: Connecting to remote service
2022-06-26 14:24:03.799 20151-20196/com.example.training V/FA: Connection attempt already in progress
2022-06-26 14:24:03.806 20151-20196/com.example.training V/FA: Connection attempt already in progress
2022-06-26 14:24:03.860 20151-20186/com.example.training V/FA: onActivityCreated
2022-06-26 14:24:03.948 20151-20151/com.example.training W/xample.trainin: Accessing hidden method Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z (greylist, reflection, allowed)
2022-06-26 14:24:03.949 20151-20151/com.example.training W/xample.trainin: Accessing hidden method Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V (greylist, reflection, allowed)
2022-06-26 14:24:04.106 20151-20196/com.example.training V/FA: Activity resumed, time: 4280644798
2022-06-26 14:24:04.111 20151-20196/com.example.training I/FA: Tag Manager is not found and thus will not be used
2022-06-26 14:24:04.132 20151-20151/com.example.training W/Looper: PerfMonitor looperActivity : package=com.example.training/.orderActivity time=355ms latency=679ms running=325ms  procState=2 ClientTransaction{ callbacks=[android.app.servertransaction.LaunchActivityItem] lifecycleRequest=android.app.servertransaction.ResumeActivityItem } historyMsgCount=1 (msgIndex=1 wall=705ms seq=2 running=651ms runnable=8ms late=2ms h=android.app.ActivityThread$H w=110)
2022-06-26 14:24:04.133 20151-20151/com.example.training W/Looper: PerfMonitor looperActivity : package=com.example.training/.orderActivity time=0ms latency=1034ms running=0ms  procState=2 ClientTransaction{ callbacks=[android.app.servertransaction.TopResumedActivityChangeItem] } historyMsgCount=2 (msgIndex=1 wall=705ms seq=2 running=651ms runnable=8ms late=2ms h=android.app.ActivityThread$H w=110) (msgIndex=2 wall=355ms seq=3 running=325ms runnable=9ms late=679ms h=android.app.ActivityThread$H w=159)
2022-06-26 14:24:04.136 20151-20196/com.example.training V/FA: Connection attempt already in progress
2022-06-26 14:24:04.138 20151-20196/com.example.training V/FA: Connection attempt already in progress
2022-06-26 14:24:04.154 20151-20208/com.example.training D/NetworkSecurityConfig: No Network Security Config specified, using platform default
2022-06-26 14:24:04.180 20151-20203/com.example.training I/AdrenoGLES-0: QUALCOMM build                   : 243b6bc, I98aee2b40e
    Build Date                       : 12/08/20
    OpenGL ES Shader Compiler Version: EV031.29.00.16
    Local Branch                     : 
    Remote Branch                    : refs/tags/AU_LINUX_ANDROID_LA.UM.8.15.R1.10.00.00.643.066
    Remote Branch                    : NONE
    Reconstruct Branch               : NOTHING
2022-06-26 14:24:04.180 20151-20203/com.example.training I/AdrenoGLES-0: Build Config                     : S P 8.0.16 AArch64
2022-06-26 14:24:04.180 20151-20203/com.example.training I/AdrenoGLES-0: Driver Path                      : /vendor/lib64/egl/libGLESv2_adreno.so
2022-06-26 14:24:04.186 20151-20203/com.example.training I/AdrenoGLES-0: PFP: 0x016ee188, ME: 0x00000000
2022-06-26 14:24:04.276 20151-20196/com.example.training D/FA: Connected to remote service
2022-06-26 14:24:04.278 20151-20196/com.example.training V/FA: Processing queued up service tasks: 5
2022-06-26 14:24:09.346 20151-20196/com.example.training V/FA: Inactivity, disconnecting from the service

Here is the LOGCAT where there is nullPointer Exception I will copy paste only the red letters :

E/libc: Access denied finding property "ro.vendor.df.effect.conflict"
E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.training, PID: 22287
    java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.example.training.model.pelanggan.getNama()' on a null object reference
        at com.example.training.orderActivity$1.onDataChange(orderActivity.java:38)
        at com.google.firebase.database.core.ValueEventRegistration.fireEvent(ValueEventRegistration.java:75)
        at com.google.firebase.database.core.view.DataEvent.fire(DataEvent.java:63)
        at com.google.firebase.database.core.view.EventRaiser$1.run(EventRaiser.java:55)
        at android.os.Handler.handleCallback(Handler.java:883)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:226)
        at android.app.ActivityThread.main(ActivityThread.java:7592)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)

This Logcat only happes when I use Alternate Version and it forces closes the application unlike the first code

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

仙气飘飘 2025-02-17 15:37:35

您会收到以下错误:

java.lang.nullpoInterException:尝试调用虚拟方法'java.lang.string com.example.training.model.model.pelanggan.getnama()'null对象参考

因为您正在尝试读取name的值从不正确的参考文献中。当您使用以下代码行时:

fDatabase = FirebaseDatabase.getInstance().getReference().child("pelanggan").child("nama");

这意味着您正在尝试从以下位置读取值:

root/pelanggan/nama

实际上不存在。看到您的数据库模式,您想念一个孩子。因此,正确的参考应该是:

fDatabase = FirebaseDatabase.getInstance()
.getReference()
.child("pelanggan")
.child("pg89814") //

You're getting the following error:

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.example.training.model.pelanggan.getNama()' on a null object reference

Because you're trying to read the value of name from an incorrect reference. When you're using the following line of code:

fDatabase = FirebaseDatabase.getInstance().getReference().child("pelanggan").child("nama");

It means that you're trying to read a value from the following location:

root/pelanggan/nama

Which actually doesn't exist. Seeing your database schema, you're missing a child. So the correct reference should be:

fDatabase = FirebaseDatabase.getInstance()
                            .getReference()
                            .child("pelanggan")
                            .child("pg89814") //????
                            .child("nama");

If you, however, want to read that child, as an object of type pelanggan, then you should use the following lines of code:

private void getname() {
        DatabaseReference db = FirebaseDatabase.getInstance().getReference();
        DatabaseReference ref = db..child("pelanggan").child("pg89814");
        ref.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                pelanggan pelanggan = dataSnapshot.getValue(pelanggan.class);
                String nama = pelanggan.getNama();

                retrieveTV.setText(nama);
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {
                Toast.makeText(orderActivity.this, "Fail to get data.", Toast.LENGTH_SHORT).show();
            }
        });
    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文