2017-04-19 23 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(); 
    } 


    } 
}); 
相关问题