I am very much surprised that I couldn't find this in net even after 1 hour searching!
I have a date picker dialog slightly modified from the original Pickers example (thanks to Raghunandan for this).
But I do not want to set the default date as current date, rather it should pick the date from EditText and set that date to datepickerdialog. Can anybody please help me solving this? My current code stands as below.
EDITED I need to know how I can access the value of EditText datepurchased from inside DatePickerFragment class.
MAIN CLASS:
public class EditEntry extends Activity implements DatePickerFragment.TheListener{
EditText edit_datepurchased;
public void showdate(View v) {
edit_datepurchased = (EditText) findViewById(v.getId());
DialogFragment newFragment = new DatePickerFragment();
newFragment.show(getFragmentManager(), "datePicker");
}
public void returnDate(String date) {
edit_datepurchased.setText(date);
}
}
DatePickerFragment CLASS:
public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {
TheListener listener;
public interface TheListener{
public void returnDate(String date);
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState){
final Calendar c=Calendar.getInstance();
int year=c.get(Calendar.YEAR);
int month=c.get(Calendar.MONTH);
int day=c.get(Calendar.DAY_OF_MONTH);
listener = (TheListener) getActivity();
return new DatePickerDialog(getActivity(), this, year, month, day);
}
public void onDateSet(DatePicker view, int year, int month, int day){
Calendar c = Calendar.getInstance();
c.set(year, month, day);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String formattedDate = sdf.format(c.getTime());
if (listener != null)
{
listener.returnDate(formattedDate);
}
//listener.returnDate(year+"-"+(month+1)+"-"+day);
}
}
n.b.: I have a question here on same code before, but I don't know how to add question in old thread.
Using SimpleDateFormat
you can convert the date in the edittext to milliseconds.
example:
DateFormat df = new SimpleDateFormat("MM/dd/yyyy",Locale.US);
you will need to adjust the format based on how you are displaying it but after that just use the parse method from the DateFormat
object
Date d = df.parse(dateString);
then create a Calendar
object and set the date
Calendar calendar = Calendar.getInstance();
calendar.setDate(d);
Edit:
to send the text from the EditText
you need to send the string in the bundle when you create the dialogfragment
example:
DialogFragment newFragment = new DatePickerFragment();
Bundle bundle = new Bundle();
bundle.putString("dateAsText",edit_datepurchased.getText().toString());
newFragment.setArguments(bundle);
newFragment.show(getFragmentManager(), "datePicker");
then in your dialogfragment use getArguments()
to get the bundle
Bundle bundle = getArguments();
String date = bundle.getString("dateAsText");