У меня есть экземпляр класса User (currentUser) с 3 параметрами: имя пользователя, адрес электронной почты и рейтинг, а также коллекция «пользователей» Firestore с документами, включающими только 3 поля: имя пользователя, адрес электронной почты и рейтинг. Я пытаюсь получить данные зарегистрированного пользователя и сохранить их в своем экземпляре currentUser и отобразить их с помощью метода loadUserData (), но Android просто не присвоит значение.
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.fragment_profile, container, false);
ownerProfileRetriever(this.getContext());
loadUserData(root);
viewPager = root.findViewById(R.id.view_pager);
tabLayout = root.findViewById(R.id.tabs);
viewPager.setAdapter(createCardAdapter());
new TabLayoutMediator(tabLayout, viewPager,
new TabLayoutMediator.TabConfigurationStrategy() {
@Override public void onConfigureTab(@NonNull TabLayout.Tab tab, int position) {
tab.setText("Tab " + (position + 1));
}
}).attach();
return root;
}
private void ownerProfileRetriever(Context context) {
String userId = FirebaseAuth.getInstance().getCurrentUser() != null ? FirebaseAuth.getInstance().getCurrentUser().getUid() : null;
FirebaseFirestore db = FirebaseFirestore.getInstance();
if (userId == null || userId.isEmpty()) {
Toast.makeText(context, "No user id", Toast.LENGTH_SHORT).show();
return;
}
DocumentReference docRef = db.collection("users").document(userId);
docRef.get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
@Override
public void onSuccess(DocumentSnapshot documentSnapshot) {
currentUser = documentSnapshot.toObject(User.class);
}
});
}
private void loadUserData(View root){
TextView username = root.findViewById(R.id.username);
username.setText(currentUser.getUsername());
TextView email = root.findViewById(R.id.email);
email.setText(currentUser.getEmail());
TextView rating = root.findViewById(R.id.ratingValue);
rating.setText(String.valueOf(currentUser.getRating()));
}
}
Когда Я запускаю его, я не получаю ошибок, но имя пользователя, адрес электронной почты и рейтинг не отображаются на экране. (на всякий случай дата, которая не должна отображаться в пейджере просмотра)