Firebase Firestore проблема асинхронного поведения - PullRequest
0 голосов
/ 08 октября 2019

Здесь я пытаюсь получить данные профиля пользователя из хранилища в методе onStart. onSuccess firebase имеет асинхронное поведение, поэтому TOAST в методе onCreate приведет к исключению nullpointerexception. Есть ли способ отложить вызов onCreate до тех пор, пока onSuccess не будет завершен, т.е. данные будут извлечены из пожарного хранилища.

Примечание. Я хотел загрузить объект данных профиля пользователя перед выполнением метода onCreate.

    @Override
protected void onStart() {
    super.onStart();
    firestore = FirebaseFirestore.getInstance();
    firestore.collection("users").document(cUserEmail).get()
            .addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
                @Override
                public void onSuccess(DocumentSnapshot documentSnapshot) {
                    user = new User(documentSnapshot.getString("name")
                            , documentSnapshot.getString("email")
                            , documentSnapshot.getString("rollNumber")
                            , documentSnapshot.getString("mobileNumber")
                            , documentSnapshot.getString("password")
                            , documentSnapshot.getString("department")
                            , documentSnapshot.getString("semester"));
                }
            });

}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main_std);
    findViews();

    Toast.makeText(this, user.getName(), Toast.LENGTH_SHORT).show();
}

1 Ответ

2 голосов
/ 08 октября 2019

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

Решение 1: Записьвсплывающее сообщение об успешном завершении данных.

Решение 2. Попробуйте показать загрузку до тех пор, пока данные не будут выбраны.

Примечание. Не рекомендуется выбирать данные в onStart

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