Pregunta

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.

¿Fue útil?

Solución

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");

Otros consejos

I hope it helps you:

public class DatePickerFragment extends DialogFragment
{
    private OnDateSetListener onDateSetListener;

    public DatePickerFragment() {}

    public void setOnDateSetListener(OnDateSetListener onDateSetListener) {
        this.onDateSetListener = onDateSetListener;
    }

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        // Use the current date as the default date in the picker
        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);

        // Create a new instance of DatePickerDialog and return it
        return new DatePickerDialog(getActivity(), onDateSetListener, year, month, day);
    }

}

"final Calendar c=Calendar.getInstance();" ,This code set "c" to current time,modify it to what time you want.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top