簡體   English   中英

如何在兩個不同的活動中從Firebase實時數據庫檢索數據

[英]How can I retrieve data from Firebase Realtime Database in two different activity

我正在設置一個可以在兩個不同活動中顯示個人數據的android應用。 數據存儲在我的Firebase數據庫中,有人可以幫助我嗎?

我已經嘗試在兩個Java類中都使用addValueEventListener。 負責在“用戶個人資料”活動中顯示用戶信息的用戶類已成功從我的Firebase檢索了數據,但另一個仍無法從我的Firebase檢索數據。 這是來自Java類的代碼,無法從Firebase檢索數據。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_land_profile);

    mAuth = FirebaseAuth.getInstance();
    mUser = mAuth.getCurrentUser();

    mDBase = FirebaseDatabase.getInstance();


    nama_lahan = (TextView) findViewById(R.id.nama_lahan);
    lebar_lahan = (TextView) findViewById(R.id.lebar_lahan);
    panjang_lahan = (TextView) findViewById(R.id.panjang_lahan);
    luas_lahan = (TextView) findViewById(R.id.luas_lahan);
    jenis_lahan = (TextView) findViewById(R.id.jenis_lahan);
    jenis_pupuk = (TextView) findViewById(R.id.jenis_pupuk);
    public void fetchLandData (String userUID){
    mAkun = mDBase.getReference("Akun").child(userUID);
    mAkun.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            for(DataSnapshot landData : dataSnapshot.getChildren()){
                Lahan lahan = landData.getValue(Lahan.class);

                if(lahan != null){
                    namaLahan = lahan.getNamaLahan();
                    jns_lahan = lahan.getJenisLahan();
                    jns_pupuk = lahan.getJenisPupuk();
                    lebarLahan = lahan.getLebarLahan();
                    panjangLahan = lahan.getPanjangLahan();

                    luasLahan = panjangLahan*lebarLahan;

                    nama_lahan.setText(namaLahan);
                    jenis_pupuk.setText(jns_pupuk);
                    jenis_lahan.setText(jns_lahan);
                    lebar_lahan.setText(String.valueOf(lebarLahan));
                    panjang_lahan.setText(String.valueOf(panjangLahan));
                    luas_lahan.setText(String.valueOf(luasLahan));
                }else{
                    Toast.makeText(LandProfileActivity.this, "Gak iso pisan ``bos", Toast.LENGTH_SHORT).show();
                }
            }
        }
        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });

雖然另一個結構幾乎相同,但變量名不同,它可以給我我想要的結果。

那是我的應用程序的屏幕截圖,無法從 我的Firebase 檢索數據這就是我的Firebase DB的樣子

這些是我從logcat復制的一些錯誤:

2019-02-09 23:32:11.070 1645-3271/? E/ActivityTrigger: activityStartTrigger: not whiteListedcom.example.johno.test/com.example.johno.test.LandProfileActivity/1 2019-02-09 23:32:11.072 1645-3271/? E/ActivityTrigger: activityResumeTrigger: not whiteListedcom.example.johno.test/com.example.johno.test.LandProfileActivity/1 2019-02-09 23:32:11.079 1645-3065/? E/ActivityTrigger: activityResumeTrigger: not whiteListedcom.example.johno.test/com.example.johno.test.LandProfileActivity/1

您可以將Firebase ValueEvent偵聽器放在Application類中:

public class MyApplication extends Application {

   //mAkun field declaration;
   private ValueEventListener value_event_listener;


    @Override
    public void onCreate() {
        mAkun = mDBase.getReference("Akun").child(userUID);
        mAkun.addValueEventListener(new ValueEventListener() {/*..*/}
    }
    @Override
    public void onTerminate() {
        super.onTerminate();
        mAkun.removeEventListener(value_event_listener);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM