Extend your SelectDateFragment
class with the following constructor, keeping a reference to the EditText
field:
public class SelectDateFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {
private EditText edit
public SelectDateFragment(EditText edit) {
this.edit = edit;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final Calendar calendar = Calendar.getInstance();
int yy = calendar.get(Calendar.YEAR);
int mm = calendar.get(Calendar.MONTH);
int dd = calendar.get(Calendar.DAY_OF_MONTH);
return new DatePickerDialog(getActivity(), this, yy, mm, dd);
}
public void onDateSet(DatePicker view, int yy, int mm, int dd) {
populateSetDate(edit, yy, mm+1, dd);
}
}
And in the populateSetDate
method:
public void populateSetDate(EditText edit, int year, int month, int day)
{
edit.setText( day + "." + month + "." + year);
}
So that when you create the EditText
field and its onClick
event, you can pass the field:
TableRow row = new TableRow(this);
row.setLayoutParams(new TableRow.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
edit = new EditText(this);
edit.setLayoutParams(new TableRow.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
edit.setHint("Tap to select "+input_desc[index]);
edit.setFocusable(false);
edit.setClickable(true);
edit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
DialogFragment newFragment = new SelectDateFragment(edit);
newFragment.show(getSupportFragmentManager(), "DatePicker");
}
});
allElement_date.add(edit);
row.addView(edit);
table.addView(row);
Of course you could use some more elaborate form of date formatting when calling setText()
instead of just building it together with "+" string concatenation. And maybe you don't want to pass values for year, month and date separately, but that's just cosmetics that are not part of your initial problem.