Не могу записать/прочитать данные с UserModel
Всем привет! Я новичёк в android и возник такой вопрос: У меня есть Пользователи с атрибутами username, email, profilePic. Всё это храниться в RealtimeDatabase под индивидуальными ключами вроде этого: 8AMkMNUfjdh0zolHeNs5StTubed2

При входе в моё приложение по email и password выполняеться вот этот фрагмент кода:
private void handleLogin() {
FirebaseAuth.getInstance()
.signInWithEmailAndPassword(email.getText().toString(), password.getText().toString())
.addOnCompleteListener(task -> {
if (task.isSuccessful()) {
readData(FirebaseDatabase.getInstance().getReference("user/" + Objects.requireNonNull(FirebaseAuth.getInstance().getCurrentUser()).getUid()));
startActivity(new Intent(LoginActivity.this, MainActivity.class));
Toast.makeText(LoginActivity.this, "Вход прошёл успешно!", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(LoginActivity.this, Objects.requireNonNull(task.getException()).getLocalizedMessage(), Toast.LENGTH_LONG).show();
}
});
}
private void readData(DatabaseReference uID) {
uID.get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
@Override
public void onComplete(@NonNull Task<DataSnapshot> task) {
if (task.isSuccessful()) {
if (task.getResult().exists()) {
Toast.makeText(LoginActivity.this,"Successfully Read",Toast.LENGTH_SHORT).show();
DataSnapshot dataSnapshot = task.getResult();
String username = String.valueOf(dataSnapshot.child("username").getValue());
String email = String.valueOf(dataSnapshot.child("email").getValue());
String profilePic = String.valueOf(dataSnapshot.child("profilePic").getValue());
user.setUsername(username);
user.setEmail(email);
user.setProfilePic(profilePic);
} else {
Toast.makeText(LoginActivity.this,"User Doesn't Exist",Toast.LENGTH_SHORT).show();
}
} else {
Toast.makeText(LoginActivity.this, "Failed to read", Toast.LENGTH_LONG).show();
}
}
});
В методе readData я заношу в свой класс UserModel данные с помощью set-ров, которые я получил с базы данных:
DataSnapshot dataSnapshot = task.getResult();
String username = String.valueOf(dataSnapshot.child("username").getValue());
String email = String.valueOf(dataSnapshot.child("email").getValue());
String profilePic = String.valueOf(dataSnapshot.child("profilePic").getValue());
user.setUsername(username);
user.setEmail(email);
user.setProfilePic(profilePic);
Мой класс UserModel:
package com.example.nana.models;
public class UserModel {
private String username, email, profilePic;
public UserModel() {
}
public UserModel(String username, String email, String profilePic) {
this.username = username;
this.email = email;
this.profilePic = profilePic;
}
public String getProfilePic() {
return profilePic;
}
public void setProfilePic(String profilePic) {
this.profilePic = profilePic;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
Здесь во фрагменте я пытаюсь получить и поставить в TextView username, который я хочу взять с UserModel:
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
profileViewModel = new ViewModelProvider(this).get(ProfileViewModel.class);
binding = FragmentProfileBinding.inflate(inflater, container, false);
textView = binding.textProfile;
profileViewModel.getText().observe(getViewLifecycleOwner(), textView::setText);
root = binding.getRoot();
binding.viewPager2.setAdapter(new ViewPagerAdapterProfile(this));
binding.tabLayout.setTabIconTint(null);
UserModel userModel = new UserModel();
binding.textProfileName.setText(userModel.getUsername());
new TabLayoutMediator(binding.tabLayout, binding.viewPager2,
(tab, position) -> {
if (position == 0) {
tab.setText(R.string.posts);
new PostsFragment();
} else {
tab.setText(R.string.saved);
new SavesFragment();
}
}).attach();
binding.backButton.setOnClickListener(v -> requireActivity().onBackPressed());
binding.buttonExit.setOnClickListener(v -> {
FirebaseAuth.getInstance().signOut();
startActivity(new Intent(requireActivity(), LoginActivity.class).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_CLEAR_TOP));
requireActivity().finish();
});
return root;
}
Но в итоге TextView остаёться пустым. Не знаю, что это может быть, так как большого опыта работы с Models нет. Даже до конца не понимаю: я не правильно считываю, или не правильно записываю. Буду благодарен за любую помощь или подсказку!
Вот проверка на то, что действительно оно что-то заносит:
user.setUsername(String.valueOf(dataSnapshot.child("username").getValue()));
user.setEmail(String.valueOf(dataSnapshot.child("email").getValue()));
user.setProfilePic(String.valueOf(dataSnapshot.child("profilePic").getValue()));
System.out.println("----------------------------------------------------------------------");
System.out.println(user.getUsername() + " " + user.getEmail() + " " + user.getProfilePic());
System.out.println("----------------------------------------------------------------------");
Оно выводит данные именно о том пользователе, под email которым я захожу