Android Firebase OnCompleteListener не работает - PullRequest
0 голосов
/ 17 ноября 2018

Я создаю код, в котором я хочу сохранить некоторые данные в базе данных 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) {
    }
});

В этом случае хранятся userId, time, name, но не somethingElse.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...