0

I was trying to fetch some data from firebase and this is one of the activity of my project.This activity is crashing as soon as it opens. Data fetching is good is we pass reference directly on to child(),but when we try to pass any String variable- which is assigned from a editText- throwing problem. Here what I have found is that the studentBranch variable is getting assigned a new value from the " studentYear=(String) yearSelect.getText().toString()" method but it is not passed onto the firebase reference child(). help me to fix this !, I'm completely a noob in android development

    package com.example.presence;

import static android.content.ContentValues.TAG;

import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import com.firebase.ui.database.FirebaseRecyclerOptions;
import com.google.firebase.database.FirebaseDatabase;

public class viewStudentsDetails_Activity extends AppCompatActivity{
    RecyclerView recView;
    Button fetch;
    EditText branchSelect,yearSelect;
    viewStudentAdapter myadapter;
    public  String studentBranch;
    public String studentYear;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_view_students_details);
        recView=findViewById(R.id.recView);
        fetch=findViewById(R.id.buttonFetch);
        branchSelect=findViewById(R.id.editTextDepartment);
        yearSelect=findViewById(R.id.editTextYear);
        recView.setLayoutManager(new LinearLayoutManager(this));
        fetch.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                studentYear=(String) yearSelect.getText().toString();
                studentBranch=(String) branchSelect.getText().toString();
                //reference=database.getReference().;
                FirebaseRecyclerOptions<viewStudelModelclass> options =
                        new FirebaseRecyclerOptions.Builder<viewStudelModelclass>()
                                .setQuery(FirebaseDatabase.getInstance().getReference().child("students").child(studentBranch).child(studentYear), viewStudelModelclass.class)
                                .build();
                myadapter=new viewStudentAdapter(options);
                recView.setAdapter(myadapter);
            }
        });


         DividerItemDecoration dividerItemDecoration=new DividerItemDecoration(getApplicationContext(),DividerItemDecoration.VERTICAL);
         recView.addItemDecoration(dividerItemDecoration);

    }
    @Override
    protected void onStart() {
        super.onStart();
        myadapter.startListening();
    }
    @Override
    protected void onStop() {
        super.onStop();
        myadapter.stopListening();
    }




}

here is my XML code

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".viewStudentsDetails_Activity"
    android:gravity="center_horizontal">


    <TextView
        android:id="@+id/textView10"
        android:layout_width="150dp"
        android:layout_height="36dp"
        android:gravity="center"
        android:text="Department"
        android:textSize="19sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.141"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.045" />

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recView"
        android:layout_width="match_parent"
        android:layout_height="400dp"
        android:layout_alignParentBottom="true"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.921"
        tools:ignore="MissingConstraints" >

    </androidx.recyclerview.widget.RecyclerView>

    <EditText
        android:id="@+id/editTextDepartment"
        android:layout_width="126dp"
        android:layout_height="48dp"
        android:ems="10"
        android:hint="eg: ME"
        android:inputType="textPersonName"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.859"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.028" />

    <TextView
        android:id="@+id/textView11"
        android:layout_width="150dp"
        android:layout_height="36dp"
        android:gravity="center"
        android:text="Year"
        android:textSize="19dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.141"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.137" />

    <EditText
        android:id="@+id/editTextYear"
        android:layout_width="126dp"
        android:layout_height="48dp"
        android:ems="10"
        android:hint="eg: 2016"
        android:inputType="textPersonName"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.859"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.138" />

    <Button
        android:id="@+id/buttonFetch"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Fetch Details"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.498"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.248" />


</androidx.constraintlayout.widget.ConstraintLayout>
  • You are talking about code in onClick handler. But this code is not executed at opening activity. Better post the relevant lines from the logcat. – blackapps Feb 05 '22 at 07:28
  • There is no way you can do that. Firebase API is asynchronous. So please check the duplicate to see how can you solve this using a callback. You might also be interested in reading this article, [How to read data from Firebase Realtime Database using get()?](https://medium.com/firebase-tips-tricks/how-to-read-data-from-firebase-realtime-database-using-get-269ef3e179c5). – Alex Mamo Feb 05 '22 at 09:39

0 Answers0