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
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