3

In my app I have two edittext and I want when click on that two edittext datepicker dialog open and set two value in edit text.

final DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() {

        @Override
        public void onDateSet(DatePicker view, int year, int monthOfYear,
                              int dayOfMonth) {
            // TODO Auto-generated method stub
            myCalendar.set(Calendar.YEAR, year);
            myCalendar.set(Calendar.MONTH, monthOfYear);
            myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
            updateDOB();
            updateDOA();
        }

    };
    doa.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            new DatePickerDialog(FamilyEditActivity.this, date, myCalendar
                    .get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
                    myCalendar.get(Calendar.DAY_OF_MONTH)).show();
        }
    });
    spoucedob.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            new DatePickerDialog(FamilyEditActivity.this, date, myCalendar
                    .get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
                    myCalendar.get(Calendar.DAY_OF_MONTH)).show();
        }
    });
}

private void updateDOA() {
    String myFormat = "yyyy-MM-dd";
    SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US);
    doa.setText(sdf.format(myCalendar.getTime()));
}
private void updateDOB() {
    String myFormat = "yyyy-MM-dd";
    SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US);
    spoucedob.setText(sdf.format(myCalendar.getTime()));
}

this is my code.When I set date in one edittext, it change other edittext value in same time.Please tell me what is the problem... Thanks.

forpas
  • 160,666
  • 10
  • 38
  • 76
Arpan Sarkar
  • 189
  • 3
  • 14
  • method are called on edittext box click event.updateDOA(),updateDOB() –  Dec 11 '18 at 12:37

1 Answers1

6

Declare a variable at the class level:

EditText clickedEditText;

and inside the click listeners set it to the clicked EditText:

doa.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        clickedEditText = (EditText) view;
        new DatePickerDialog(FamilyEditActivity.this, date, myCalendar
                .get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
                myCalendar.get(Calendar.DAY_OF_MONTH)).show();
    }
});
spoucedob.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        clickedEditText = (EditText) view;
        new DatePickerDialog(FamilyEditActivity.this, date, myCalendar
                .get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
                myCalendar.get(Calendar.DAY_OF_MONTH)).show();
    }
});

Now you only need 1 method update():

private void update() {
    String myFormat = "yyyy-MM-dd";
    SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US);
    clickedEditText.setText(sdf.format(myCalendar.getTime()));
}

and in onDateSet():

final DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() {
        @Override
        public void onDateSet(DatePicker view, int year, int monthOfYear,                               int dayOfMonth) {
            myCalendar.set(Calendar.YEAR, year);
            myCalendar.set(Calendar.MONTH, monthOfYear);
            myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
            update();
        }
};
forpas
  • 160,666
  • 10
  • 38
  • 76
  • Thanks..It Worked ...But If i want to send that two edittext data to other activity...How I do that – Arpan Sarkar Dec 11 '18 at 12:49
  • You must put extra values to the intent that opens the new activity: `intent.putExtra("key1", doa.getText().toString());` – forpas Dec 11 '18 at 12:52
  • Also see this: https://stackoverflow.com/questions/5265913/how-to-use-putextra-and-getextra-for-string-data – forpas Dec 11 '18 at 12:53