Не получается создать ветку для каждого игрока в 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) {
// Обработка ошибок
}
});
}
}
}
Пробовал добавлять разные методы для проверок того, что пользователь не зареган в бд, и последущее его зарегестрирование.