Событие ViewPager выдает ошибку при выходе пользователя - PullRequest
0 голосов
/ 01 сентября 2018

У меня есть приложение с LoginActivity и MainActivity. и в моей MainActivity у меня есть три фрагмента. В одном из них (UsersFragemnt) я вижу всех пользователей, которые зарегистрировались в приложении. Это работает нормально, но когда я выхожу, я получаю ошибку из этого фрагмента. Я искал souluton и обнаружил, что это происходит потому, что событие все еще работает, даже когда я захожу в LoginActivity, поэтому оно дает мне ноль и ошибку. Задумка заключалась в том, чтобы поставить (Activity)getContext() перед событием, и это сработало, но теперь, как ни странно, я снова получаю эту ошибку, и иногда она работает, а иногда нет. Кто-нибудь знает почему?

Это мой UsersFragemnt, где проблема происходит:

public void onStart() {                                                                                                                 
    super.onStart();                                                                                                                    

    usersList.clear();                                                                                                                  

        mFiresrote.collection("Users").addSnapshotListener((Activity)getContext(),new EventListener<QuerySnapshot>() {                  
            @Override                                                                                                                   
            public void onEvent(@Nullable QuerySnapshot queryDocumentSnapshots, @Nullable FirebaseFirestoreException e) {               

                for (DocumentChange doc : queryDocumentSnapshots.getDocumentChanges()) {                                                
                    if (doc.getType() == DocumentChange.Type.ADDED) {                                                                   

                        String user_id = doc.getDocument().getId();                                                                     

                        Users users = doc.getDocument().toObject(Users.class).withId(user_id);                                          
                        usersList.add(users);                                                                                           

                        usersRecyclerAdapter.notifyDataSetChanged();           

мой ProfileFragemnt код (где кнопка выхода из системы)

mLogoutBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                        mAuth.signOut();
                        Intent loginIntent = new Intent(container.getContext(),LoginActivity.class);
                        startActivity(loginIntent);

и это моя ошибка:

 java.lang.NullPointerException: Attempt to invoke virtual method 'java.util.List com.google.firebase.firestore.QuerySnapshot.getDocumentChanges()' on a null object reference
                      at dim.aviv.projectldogma.UsersFragment$1.onEvent(UsersFragment.java:75)
                      at dim.aviv.projectldogma.UsersFragment$1.onEvent(UsersFragment.java:71)

1 Ответ

0 голосов
/ 01 сентября 2018

Добавить нулевую проверку

@Override                                                                                                                   
public void onEvent(@Nullable QuerySnapshot queryDocumentSnapshots, @Nullable FirebaseFirestoreException e) {  
   if(queryDocumentSnapshots == null){
       return;
   }
   for (DocumentChange doc : queryDocumentSnapshots.getDocumentChanges())

Другой способ добавить ниже, проверьте также

if (e != null) {
   return;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...