2016-07-24 17 views
-1

我正在Android studio中開發一個新應用程序。我使用setvalue將數據保存到Firebase數據庫,但沒有問題。但是,當我試圖從Firebase中檢索附加addValueEventListener到根參考的數據時,即使沒有調用OnDataChange()也不會調用onCancelled()我可以將數據保存到Firebase,但我無法檢索它

我會錯過的東西,任何有用的建議表示讚賞。

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_detail); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    mDatabase = FirebaseDatabase.getInstance().getReference(); 
    mDatabase.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot snapshot) { 
      System.out.println(snapshot.getValue()); } 


      @Override 
     public void onCancelled(DatabaseError firebaseError) { 
     System.out.println("The read failed: " + firebaseError.getMessage());} 
     }); 

我的疑問是在調試我的程序時,控件必須在onDataChange()或onCancelled()中進行。但它不會。我在onDataChange()和onCancelled()fm的System.out.println語句中放置了一個斷點,但控件並沒有在那裏停止。

回答

-1

解決

我試圖創建新項目,並保存和檢索從火力地堡數據庫的工作沒有任何問題的數據。

然後我發現項目中出現的問題是我從舊版firebase.com控制檯導入的項目。我刪除了根據新的Firebase文檔棄用的應用程序級構建gradle中的下面幾行,然後它運行良好。

packagingOptions { 
    exclude 'META-INF/LICENSE' 
    exclude 'META-INF/LICENSE-FIREBASE.txt' 
    exclude 'META-INF/NOTICE' 
    } 

希望這對別人有幫助。

0

您是否閱讀過文檔?

重要:的onDataChange()方法被調用每次數據被 改變在指定數據庫參考,包括更改 孩子。要限制快照的大小,請僅在用於觀看更改所需的最高級別上附加。例如,不建議將 偵聽器附加到數據庫的根目錄。

https://firebase.google.com/docs/database/android/retrieve-data

我想別的問題

它的原因

一切都看起來很不錯,除了System.out,我不知道它會工作,Android有它自己的記錄工具。嘗試Log.e

+0

雖然通常不建議將偵聽器附加到根,但不會導致回調被忽略。 –

0

試試這個

mDatabase.child("your table name here").addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot snapshot) { 
      System.out.println(snapshot.getValue()); } 


      @Override 
     public void onCancelled(DatabaseError firebaseError) { 
     System.out.println("The read failed: " + firebaseError.getMessage());} 
     }); 
+0

我曾嘗試在各種子級別上附加addValueEventListener,但仍然無法正常工作。 –

+0

我的疑問是在調試我的程序時,控件必須進入onDataChange()或onCancelled()。但它不會。我在onDataChange()和onCancelled()fm的System.out.println語句中放置了一個斷點,但控件並沒有在那裏停止。 –

+0

@RafiMdk請在Firebase數據庫中有數據。我曾多次工作,而且工作完美 –

0

嘗試。讓我知道這是否更迭

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_detail); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    mDatabase = FirebaseDatabase.getInstance().getReference(); 
    mDatabase.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot snapshot) { 
      System.out.println(dataSnapshot.getValue().toString()); } 


      @Override 
     public void onCancelled(DatabaseError firebaseError) { 
     System.out.println("The read failed: " + firebaseError.getMessage());} 
     }); 
相關問題