2017-04-19 9 views
0

私はpostingdataをfirebaseに追加するために以下のコードを使用しています。問題は、finishメソッドをonCompleteにコメントすると、すべての自分のデータがfirebaseデータベースに正しく書き込まれていることです。しかし、finishメソッドのコメントを外すと、ほとんどのデータはdatbaseに書き込まれません。私は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

データを送信しています。私がデータを送信しているときに、上記のデータをコメントすると、データが{i =終了機能のコメントを外してください 電子メールのみデータベースに書かれています –

+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(); 
    } 


    } 
}); 
関連する問題