0

My createGroup class does not work properly every time I click on a drawer menu bar device is refreshing the app. Here is my fetching group method:

private void FetchGroup() {
        String userId = mAuth.getCurrentUser().getUid();
        mStore.collection("/users" + userId + "/groups").get().addOnSuccessListener(queryDocumentSnapshots -> {
            groupModelArrayList.clear();
            for (DocumentSnapshot documentSnapshot : queryDocumentSnapshots.getDocuments()) {
                GroupModel groupModel = new GroupModel(documentSnapshot.getString("grupAdi"), documentSnapshot.getString("grupAciklamasi"),
                        documentSnapshot.getString("grupResmi"), (List<String>)documentSnapshot.get("grupNumaralar"), documentSnapshot.getId());
                groupModelArrayList.add(groupModel);
            }

ERRORS:

java.lang.IllegalArgumentException: Invalid collection reference. Collection references must have an odd number of segments, but userswEfW4DUgl0gFPv7J8afrTisIiXD3/groups has 2 at com.google.firebase.firestore.CollectionReference.(CollectionReference.java:45) at com.google.firebase.firestore.FirebaseFirestore.collection(FirebaseFirestore.java:366) at com.example.smsapplication.createGroup.CreateGroupFragment.FetchGroup(CreateGroupFragment.java:140) at com.example.smsapplication.createGroup.CreateGroupFragment.onCreateView(CreateGroupFragment.java:108) at androidx.fragment.app.Fragment.performCreateView(Fragment.java:3104) at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:524) at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:261) at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1899) at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1823) at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1760) at androidx.fragment.app.FragmentManager$5.run(FragmentManager.java:547) at android.os.Handler.handleCallback(Handler.java:938) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:223) at android.app.ActivityThread.main(ActivityThread.java:7656) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)`

Alex Mamo
  • 130,605
  • 17
  • 163
  • 193
aurelius
  • 1
  • 3

1 Answers1

1

You're getting the following error:

java.lang.IllegalArgumentException: Invalid collection reference. Collection references must have an odd number of segments, but userswEfW4DUgl0gFPv7J8afrTisIiXD3/groups has 2

Because of the following line of code:

mStore.collection("/users" + userId + "/groups").get().addOnSuccessListener(/* ... /*);

Why? Because when you concatenate:

"/users" + userId + "/groups"

You'll get as result:

userswEfW4DUgl0gFPv7J8afrTisIiXD3/groups

And not:

users/wEfW4DUgl0gFPv7J8afrTisIiXD3/groups
//  

As it should. To solve this, please add / inside your reference like this:

mStore.collection("/users/" + userId + "/groups").get().addOnSuccessListener(/* ... /*);
//                      

See the /? Now you'll have 3 segments and not only 2.

Alex Mamo
  • 130,605
  • 17
  • 163
  • 193