0

I am trying to compare specializationField and address present under a child named filter of collection Doctor with a value passed by user and user's location.

For that, I am using the following code, but the application crashes when I move to AllDoctors.class where all such doctors are to be displayed in a recycler view.

Kindly help me with what I am doing wrong.

Main

skin.setOnClickListener(v -> {
            Intent it = new Intent(getContext(), AllDoctors.class);
            it.putExtra("s", "Skin Specialist");
            startActivity(it);
        });

AllDoctors.class

 passed = getIntent().getStringExtra("s");

        if (passed == null){
            Toast.makeText(this, "Error", Toast.LENGTH_SHORT).show();
            return;
        }

        recyclerView = findViewById(R.id.doctorRv);

        DatabaseReference dbRef = FirebaseDatabase.getInstance().getReference("Doctor");
        dbRef.keepSynced(true);

        DatabaseReference dbRef2 = FirebaseDatabase.getInstance().getReference("Patient").child(FirebaseAuth.getInstance().getCurrentUser().getUid());
        Query query = dbRef.orderByChild("filter").equalTo(passed,dbRef2.child("location").toString());

        FirebaseRecyclerOptions<DoctorHelperClass> options = new FirebaseRecyclerOptions.Builder<DoctorHelperClass>()
                .setQuery(query, DoctorHelperClass.class).build();
        DoctorsAdapters adapter = new DoctorsAdapters(options, AllDoctors.this);

        LinearLayoutManager GLM = new LinearLayoutManager(this);

        GLM.setReverseLayout(true);
        GLM.setStackFromEnd(true);
        recyclerView.setLayoutManager(GLM);
        recyclerView.setHasFixedSize(true);
        adapter.startListening();
        recyclerView.setAdapter(adapter);

Database

database doctor database patient

Following is my stack trace:

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.codewithkomal.fyp, PID: 17206
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.codewithkomal.fyp/com.codewithkomal.fyp.patient.AllDoctors}: com.google.firebase.database.DatabaseException: Invalid key: https://fyp-1b531-default-rtdb.firebaseio.com/Patient/L9XjRz80ByUb1JkUuzMUd6MaYBm1/location. Keys must not contain '/', '.', '#', '$', '[', or ']'
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3556)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3703)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2216)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:237)
        at android.app.ActivityThread.main(ActivityThread.java:7948)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1075)
     Caused by: com.google.firebase.database.DatabaseException: Invalid key: https://fyp-1b531-default-rtdb.firebaseio.com/Patient/L9XjRz80ByUb1JkUuzMUd6MaYBm1/location. Keys must not contain '/', '.', '#', '$', '[', or ']'
        at com.google.firebase.database.core.utilities.Validation.validateNullableKey(Validation.java:79)
        at com.google.firebase.database.Query.startAt(Query.java:462)
        at com.google.firebase.database.Query.startAt(Query.java:429)
        at com.google.firebase.database.Query.equalTo(Query.java:730)
        at com.codewithkomal.fyp.patient.AllDoctors.onCreate(AllDoctors.java:61)
        at android.app.Activity.performCreate(Activity.java:7955)
        at android.app.Activity.performCreate(Activity.java:7944)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1307)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3531)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3703) 
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2216) 
        at android.os.Handler.dispatchMessage(Handler.java:107) 
        at android.os.Looper.loop(Looper.java:237) 
        at android.app.ActivityThread.main(ActivityThread.java:7948) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1075) 

Kindly help me out, I have recently started developing with Firebase

Haneen
  • 51
  • 7

0 Answers0