2017-04-19 86 views
0

我正在使用以下代碼將postingdata添加到firebase中。問題是,當我在onComplete中評論finish方法時,我的所有數據都正確寫入了firebase數據庫。但是當我取消註釋finish方法時,大部分數據都不會寫入數據庫。我想用finish方法編寫完整的數據。無法在onComplete中使用完成方法時將完整數據寫入Firebase數據庫

mUserRefrence.child(user.getUid()).setValue(postingdata).addOnFailureListener(new OnFailureListener() { 
    @Override 
    public void onFailure(@NonNull Exception e) { 
     hideProgressDialog(); 
     Toast.makeText(LoginActivity.this, e.getLocalizedMessage(), Toast.LENGTH_SHORT).show(); 
    } 
}).addOnCompleteListener(new OnCompleteListener<Void>() { 
    @Override 
    public void onComplete(@NonNull Task<Void> task) { 
     hideProgressDialog(); 
     Toast.makeText(LoginActivity.this, getString(R.string.login_success), Toast.LENGTH_SHORT).show(); 

     startActivity(new Intent(LoginActivity.this, MainActivity.class)); 
     finish(); 
    } 
}); 
+0

你是什麼意思「大部分數據」?你能告訴我們數據庫結構並解釋什麼是寫的,什麼是不寫的? –

+0

我發送數據{[email protected],name = david,photoUrl = https://i.stack.imgur.com/tHOLT.png} 當我評論完上述數據顯示正確時,當我取消註釋完成功能 只有電子郵件寫入數據庫 –

+0

@Frank請解決我的問題 –

回答

0

發生這種情況是因爲您正在Firebase完成當前任務之前開始新活動,以將用戶數據存儲在Firebase數據庫中。你打電話給finsh();這將停止執行當前任務並將移動到新的活動。你可以做的是檢查任務是否成功,然後在你的案例主要活動中打開新的活動。這樣做可能會對您有所幫助 -

}).addOnCompleteListener(new OnCompleteListener<Void>() { 
@Override 
public void onComplete(@NonNull Task<Void> task) { 
    if (!task.issuccessful()) { 

    // this piece of code will execute if task is Unsuccessful 

    hideProgressDialog(); 
    Toast.makeText(LoginActivity.this, getString(R.string.login_Unsuccess), Toast.LENGTH_SHORT).show(); 
    } 
    else { 
     // this piece of cade will execute if task is successful 

     hideProgressDialog(); 
     startActivity(new Intent(LoginActivity.this, MainActivity.class)); 
     finish(); 
    } 


    } 
}); 
相關問題