У меня есть диалог datepicker
, который помещает edittext
для установки дня рождения. Диалог после установки даты возвращает текущую дату .. мне нужно отобразить дату, которую я выбрал, в диалоговом окне datepicker
после выбора?Как установить дату в диалоговом окне Datepicker от edittext android?
Datepicker
диалог Класс:
public class DatePickerDialog2 extends DialogFragment{
public static final String ARG_DEFAULT = "default";
private DatePicker datePicker;
private String defaultDate;
private DatePickerDialog.OnDateSetListener onDateListener;
public DatePickerDialog2() {
try {
OnDatePickerDoneButtonClickedListener act = (OnDatePickerDoneButtonClickedListener) getActivity();
} catch (ClassCastException e) {
throw new ClassCastException("Must implement OnDatePickerDoneButtonClickedListener");
}
}
public interface OnDatePickerDoneButtonClickedListener {
void OnDatePickerDoneButtonClicked(String date);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
defaultDate = getArguments().getString(ARG_DEFAULT);
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Calendar calendar = Calendar.getInstance();
if (TextUtils.isEmpty(defaultDate)) {
DateFormat df = new SimpleDateFormat("dd/MMM/yyyy");;
try {
calendar.setTime(df.parse(new Date().toString()));
Log.d("first", defaultDate + " -");
} catch (ParseException e) {
e.printStackTrace();
}
} else {
try {
DateFormat df = new SimpleDateFormat("dd/MMM/yyyy");
calendar.setTime(df.parse(defaultDate));
Log.d("second", defaultDate + " -");
} catch (ParseException e1) {
Log.d("third",defaultDate+" -");
}
}
datePicker = new DatePicker(getActivity());
datePicker.setCalendarViewShown(false);
datePicker.setMaxDate(new Date().getTime()-1 * 24 * 3600 * 1000);
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// String date =datePicker.getYear()+ "-"+ datePicker.getDayOfMonth() + "-" + (datePicker.getMonth() + 1) ;
int day = datePicker.getDayOfMonth();
int month = datePicker.getMonth();
int year = datePicker.getYear();
final Calendar calendar = Calendar.getInstance();
calendar.set(year, month, day);
SimpleDateFormat sdf = new SimpleDateFormat("dd/MMM/yyyy");
String date = sdf.format(calendar.getTime());
OnDatePickerDoneButtonClickedListener act = (OnDatePickerDoneButtonClickedListener) getActivity();
act.OnDatePickerDoneButtonClicked(date);
dismiss();
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dismiss();
}
})
//.setTitle("Select date")
.setView(datePicker);
// Create the AlertDialog object and return it
return builder.create();
}
}
edittext
, который я вызвать диалог, чтобы открыть DatePicker:
birthday.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DatePickerDialog2 dialog = new DatePickerDialog2();
Bundle bundle = new Bundle();
bundle.putString("dateAsText", birthday.getText().toString());
dialog.setArguments(bundle);
dialog.show(getSupportFragmentManager(), "date_picker_frag");
}
});
, и он говорит мне не может разрешить код, который вы пишете в EditText ? –
нет класса активности? – sajan
что такое код внутри прослушивателя кликов –