Не получается создать ветку для каждого игрока в firebase-Realtime Database

Создал бд, подключил, в тесте сделал для всех игроков одну переменную, и все работало нормально, но после того как сделал присвоение игроку своих переменных, ничего не вышло, в бд ничего не создается..

Код фрагмента ниже

public class HomeFragment extends Fragment {
    private DatabaseReference statsRef;
    private TextView levelTextView;
    private TextView experienceTextView;
    private TextView coinsTextView;

    public HomeFragment() {
        // Пустой конструктор
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_home, container, false);

        statsRef = FirebaseDatabase.getInstance().getReference().child("stats");

        levelTextView = view.findViewById(R.id.levelTextView);
        experienceTextView = view.findViewById(R.id.experienceTextView);
        coinsTextView = view.findViewById(R.id.coinsTextView);

        generateSpecialVariables();

        return view;
    }

    private void generateSpecialVariables() {
        FirebaseUser currentUser = FirebaseAuth.getInstance().getCurrentUser();
        if (currentUser != null && currentUser.isAnonymous()) {
            String playerId = currentUser.getUid();
            DatabaseReference playerRef = statsRef.child(playerId);

            playerRef.child("level").setValue(1);
            playerRef.child("experience").setValue(0);
            playerRef.child("coin").setValue(100);

            // ...
            updateStats();
        }
    }

    private void updateStats() {
        FirebaseUser currentUser = FirebaseAuth.getInstance().getCurrentUser();
        if (currentUser != null && currentUser.isAnonymous()) {
            String playerId = currentUser.getUid();

            statsRef.child(playerId).child("level").addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    Integer levelInt = dataSnapshot.getValue(Integer.class);
                    if (levelInt != null) {
                        int level = levelInt.intValue();
                        levelTextView.setText(" LVL: " + level);
                    }
                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {
                    // Обработка ошибок
                }
            });

            statsRef.child(playerId).child("experience").addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    Integer experience = dataSnapshot.getValue(Integer.class);
                    if (experience != null) {
                        int exp = experience.intValue();
                        experienceTextView.setText(" EXP: " + exp);
                    }
                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {
                    // Обработка ошибок
                }
            });

            statsRef.child(playerId).child("coin").addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    Integer coin = dataSnapshot.getValue(Integer.class);
                    if (coin != null) {
                        int coin1 = coin.intValue();
                        coinsTextView.setText(" Coin: " + coin1);
                    }
                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {
                    // Обработка ошибок
                }
            });
        }
    }
}

Пробовал добавлять разные методы для проверок того, что пользователь не зареган в бд, и последущее его зарегестрирование.


Ответы (0 шт):