Based on your class structure, the best way is to create a constructor with the EditText parameter as the parameter.
private EditText mEditText; ... public DatePickerFragment(EditText editText) { mEditText = editText; } @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { Calendar c = Calendar.getInstance(); c.set(year, monthOfYear, dayOfMonth); SimpleDateFormat sdf = new SimpleDateFormat("dd MMMM yyyy"); String formattedDate = sdf.format(c.getTime()); Toast.makeText(getActivity(), formattedDate, Toast.LENGTH_LONG).show(); mEditText.setText( formattedDate ); }
Then pass editDate when instantiating the dialog select class.
public void onClick(View v) { android.support.v4.app.DialogFragment dialogFragment = new DatePickerFragment(editDate); dialogFragment.show(getFragmentManager(), "datePicker"); }
Another solution is to remove DatePickerDialog.OnDateSetListener from DatePickerFragment AND implement a listener in your fragment.
public class OtherFragment extends Fragment implements DatePickerDialog.OnDateSetListener { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { Calendar c = Calendar.getInstance(); c.set(year, monthOfYear, dayOfMonth); SimpleDateFormat sdf = new SimpleDateFormat("dd MMMM yyyy"); String formattedDate = sdf.format(c.getTime()); Toast.makeText(getActivity(), formattedDate, Toast.LENGTH_LONG).show(); editDate.setText( formattedDate ); } }
source share