John
John

Reputation: 437

Android - Adding data to database

I am developing an android application with firebase as my database. I want to insert some data on the press of a button, but some of the objects I want to insert in the database, is placed in different methods in my fragment. How can I insert data to my database across different methods using the same button?

public class mFragment extends Fragment implements 
DateFragment.DatePickerEvent {

DatabaseReference database;
FirebaseAuth mAuth;
EditText text1;
EditText text2;

@Override
public void onDateSelected(String date) {
    Button buttonDateText = (Button) getView().findViewById(R.id.buttonDate);
    buttonDateText.setText(date);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.fragment_frag, container, false);
    database = FirebaseDatabase.getInstance().getReference("Persons");
    mAuth = FirebaseAuth.getInstance();
    final FirebaseUser user = mAuth.getCurrentUser();


    Button pickDateButton = (Button) rootView.findViewById(R.id.buttonDate);
    Button submitButton = (Button) rootView.findViewById(R.id.buttonSubmit);
    text1= (EditText) rootView.findViewById(R.id.oddsView);
    text2= (EditText) rootView.findViewById(R.id.betAmountView);

    pickDateButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            DateFragment picker = new DateFragment();
            picker.setDatePickerEvents(mFragment.this);
            picker.show(getFragmentManager(), "datePicker");
        }
    });

    submitButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            database.child("Person").addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    String myText= text1.getText().toString().trim();
                    String myAnotherText= text2.getText().toString().trim();
                    String id = database.push().getKey();
                    database.child(user.getDisplayName()).child(id).child("Adress").setValue(myText);
                    database.child(user.getDisplayName()).child(id).child("name").setValue(myAnotherText);
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });
        }
    });
    return rootView;
}


}

The implemented interface comes from a datefragment I have made, where the user can choose a date on a date-widget. I want to insert the date object into the database, but I am unsure on how to do that with the submitButton being in another method

Upvotes: 1

Views: 75

Answers (1)

Oussema Aroua
Oussema Aroua

Reputation: 5339

You already set the date to your Button using buttonDateText.setText(date); you can add this to your onDataChange and read it :

Button buttonDateText = (Button) getView().findViewById(R.id.buttonDate);
String date = buttonDateText.getText().toString();

or declare a String as class variable String mDate ="";, inside onDateSelected do mDate = date, now you can use mDate inside your onDataChange

Upvotes: 1

Related Questions