Android Firebase OnCompleteListener无法正常工作

时间:2018-11-17 05:33:45

标签: android firebase firebase-realtime-database

我正在构建一个代码,希望在Firebase数据库中保存一些数据。数据库引用为databasereference,唯一引用为databasereference.push()。 问题在于代码似乎在OnCompleteListener之前都可以工作。然后似乎停止了。

代码是:

databaseReference.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
        String name = dataSnapshot.child("firstname").getValue().toString() + " " + dataSnapshot.child("lastname").getValue().toString();
        unique.child("name").setValue(name).addOnCompleteListener(
            new OnCompleteListener<Void>() {
                @Override
                public void onComplete(@NonNull Task<Void> task) {
                    if(task.isSuccessful()){
                        unique.child("UserId").setValue(userId);
                        int ts = (int) (System.currentTimeMillis()/1000);
                        unique.child("time").setValue(0-ts);
                    }
                }
            }
        );
    }
    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
    }
});

此处数据库仅存储子name。如果我们这样修改代码:

databaseReference.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
        String name = dataSnapshot.child("firstname").getValue().toString() + " " + dataSnapshot.child("lastname").getValue().toString();
        unique.child("UserId").setValue(userId);
        int ts = (int) (System.currentTimeMillis()/1000);
        unique.child("time").setValue(0-ts);
        unique.child("name").setValue(name).addOnCompleteListener(
            new OnCompleteListener<Void>() {
                @Override
                public void onComplete(@NonNull Task<Void> task) {
                    if(task.isSuccessful()){
                        unique.child("somethingElse").setValue("something else");

                    }
                }
            }
        );
    }
    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
    }
});

在这种情况下,它存储userIdtimename,但不存储somethingElse

0 个答案:

没有答案