简体   繁体   中英

Adding data in Firebase realtime database using push() in Android Studio

I'm trying to make a feature in my hospital app which allows users to book appointment with doctor. So when they book appointments, the details such as date of appointment, patient email, doctor email, etc should get stored in both parent nodes named "Doctor Schedule" and "Patient Appointments". I'm trying to do this using push() in Firebase, but my app keeps crashing. Please help me fix it.

public class Book extends AppCompatActivity {

    TextView selectedDate;
    Button calenderButton,ok;
    FirebaseAuth mAuth;
    DatabaseReference docUser, patRef;
    ProgressDialog loader;
    FirebaseDatabase database= FirebaseDatabase.getInstance();
    String Date;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_book);

        Intent intent = getIntent();

        // receive the value by getStringExtra() method
        // and key must be same which is send by first
        // activity
        String docEmail = intent.getStringExtra("message_key1");
        String patEmail = intent.getStringExtra("message_key2");
        String patname = intent.getStringExtra("message_key2.1");
        String docname = intent.getStringExtra("message_key2.2");
        String dphone = intent.getStringExtra("message_key2.3");

        //Toast.makeText(Book.this, patname, Toast.LENGTH_SHORT).show();

        selectedDate=findViewById(R.id.text);
        calenderButton=findViewById(R.id.calender);
        ok=findViewById(R.id.ok);

        loader = new ProgressDialog(this);
        mAuth = FirebaseAuth.getInstance();

        FirebaseUser user= mAuth.getInstance().getCurrentUser();
        //docUser= database.getReference().child("Doctor Schedule");

        MaterialDatePicker materialDatePicker=MaterialDatePicker.Builder.datePicker().
                setTitleText("Select date").setSelection(MaterialDatePicker.todayInUtcMilliseconds()).build();

        calenderButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                materialDatePicker.show(getSupportFragmentManager(),"Tag_Picker");
                materialDatePicker.addOnPositiveButtonClickListener(new MaterialPickerOnPositiveButtonClickListener() {
                    @Override
                    public void onPositiveButtonClick(Object selection) {
                        selectedDate.setText(materialDatePicker.getHeaderText());
                        Date=materialDatePicker.getHeaderText();
                    }
                });
            }
        });

          class Post {

              public Post(String Date, String Patient,String Email,String Doctor,String Status) {
                // ...
            }

        }

        class Post1 {

            public Post1(String Date, String Patient,String Doctor,String Email,String Phone,String Status) {
                // ...
            }

        }

        ok.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                if (Date != null) {

                    docUser = database.getReference().child("Doctor Schedule");
                    DatabaseReference newdocUser = docUser.push();

                    newdocUser.setValue(new Post(Date, patname,patEmail,docEmail,"Pending"));


                    patRef= database.getReference().child("Patient Appointments");
                    DatabaseReference newpatRef = patRef.push();

                    newpatRef.setValue(new Post1(Date,patEmail,docname,docEmail,dphone,"Pending"));

              
                }

                else {
                    Toast.makeText(Book.this, "Select date!", Toast.LENGTH_SHORT).show();

                }

                finish();

            }
        });
    }
}

i think your app crashes when you call finish(). just remove that finish() and check if its getting updated in the database

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM