[英]How can I retrieve two different values from firebase realtime database and use outside onDataChange method?
[英]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.