有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java ViewPager事件在从用户注销时给我错误

我有一个带有LoginActivity和MainActivity的应用程序。 在我的主要活动中,我有三个片段。在其中一个(UsersFragemnt)中,我可以看到所有注册到该应用程序的用户。 这很好,但是当我注销时,我从这个片段中得到了一个错误。 我搜索了一个souluton,发现这是因为即使我去LoginActivity,事件仍在运行,所以它会给我null和error。 解决方法是将(Activity)getContext()放在事件之前,它起了作用,但现在我突然又遇到了这个错误,它有时有效,有时无效。 有人知道为什么吗

这是我的问题所在:

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) 个答案

  1. # 1 楼答案

    添加空检查

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

    另外,你也可以在下面添加检查

    if (e != null) {
       return;
    }