2016-05-26 91 views
0

我正在使用新的Firebase控制檯。我正在嘗試將對象保存到數據庫,但未保存。以下是代碼。未將數據從android中保存到Firebase數據庫中

DatabaseReference mFirebaseRef = FirebaseDatabase.getInstance().getReference(); 
mFirebaseRef.push().setValue(object, new DatabaseReference.CompletionListener() { 
      @Override 
      public void onComplete(DatabaseError databaseError, DatabaseReference reference) { 
       if (databaseError != null) { 
        Log.e(TAG, "Failed to write message", databaseError.toException()); 
       } 
      } 
     }); 

「對象」已正確創建。沒有錯誤我得到,我檢查了調試,onComplete方法沒有得到觸發。 安全規則也適用於寫入。

+0

你能告訴你如何創建'object'嗎?或者至少是可以重現問題的最小「對象」? –

+0

對象是一個java類的引用。 Object object = new Object(params)。該代碼也不適用於哈希映射。 –

回答

2

請注意,DatabaseReference.CompletionListener會在「數據庫服務器已確認操作」時觸發。您在進行測試時可能沒有網絡連接嗎?我複製你的代碼,併成功運行,它與object手機這樣定義的:

Object object = new String("Test"); 

我再啓用飛行模式,重新運行代碼並觀察你所描述的行爲。直到我禁用飛行模式並建立了網絡連接後,完成監聽器纔會啓動。

用於檢查網絡連接狀態的示例代碼在this documentation中提供。

+1

我沒有清單中的Internet權限。謝謝,這是一個愚蠢的錯誤。 –

0

使用下面的代碼:

mFirebaseRef.push().setValue(object).addOnCompleteListener(new OnCompleteListener<Void>() 
{ 
          @Override 
          public void onComplete(@NonNull Task<Void> task) { 
          if(task.isSuccessful()){ 
           // write code for successfull operation 
          } 
          } 
         }); 
        } 

.push將產生上,如果你不使用.push它將覆蓋以前存儲的數據您的數據將存儲在隨機密鑰。