簡體   English   中英

嘗試從Firebase檢索值,但獲取空值?

[英]Trying to retrieve value from Firebase, but getting null?

正如你可以從下面的代碼,我輸出中看到retrievedValue從里面onDataChange()如預期其中工程。 但是我不能從另一個地方輸出retrievedValue到的null因為它返回null

DatabaseReference ref = FirebaseDatabase.getInstance().getReference();

ref.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {

        retrievedValue = (Long) dataSnapshot.getValue();

        System.out.println(retrievedValue); //this line works
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {

    }
});

System.out.println(retrievedValue); //this line returns null! How can I fix this?

這行返回空值! 我怎樣才能解決這個問題?

我不認為您了解異步代碼的工作原理……首先,沒有任何東西返回null。 尚未分配任何東西。

您的代碼與此完全相同。

DatabaseReference ref = FirebaseDatabase.getInstance().getReference();
System.out.println(retrievedValue); //this line returns null! 

ref.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {

        retrievedValue = (Long) dataSnapshot.getValue();

        System.out.println(retrievedValue); //this line works
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {

    }
});

由於您使用的Firebase錯誤,因此無法修復。

如果您需要retrievedValue ,那么你應該把所有相關的代碼為(或之后,如通過另一種方法) onDataChange

例如

private Long retreivedValue; // starts as null

public static void updateSomething(Long data) {
    System.out.println(data); // this line works
}

public static void main(String... args) {
    DatabaseReference ref = FirebaseDatabase.getInstance().getReference();

    ref.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            retrievedValue = (Long) dataSnapshot.getValue();

            updateSomething(retrievedValue); 
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

暫無
暫無

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

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