我已经在我需要使用它的同一个活动中的各个时间实施了日期/时间选择器。现在我想创建一个单独的类,我可以在任何需要的地方调用该选择器。 谢谢!
答案 0 :(得分:3)
如果您正在使用Fragments,请使用此类:
public class DatePickerDialogFragment extends DialogFragment {
private Context context;
private Calendar MinDate, MaxDate;
private OnDateSetListener mDateSetListener;
public DatePickerDialogFragment() {
}
public DatePickerDialogFragment(OnDateSetListener callback, Calendar MinDate, Calendar MaxDate, Context context) {
mDateSetListener = callback;
this.MinDate = MinDate;
this.MaxDate = MaxDate;
this.context = context;
}
public DatePickerDialogFragment(OnDateSetListener callback, Context context) {
mDateSetListener = callback;
this.context = context;
}
DatePickerDialog dd;
DatePicker dp;
public Dialog onCreateDialog(Bundle savedInstanceState) {
Calendar cal = Calendar.getInstance();
dd = new DatePickerDialog(getActivity(), this.mDateSetListener, cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH));
dd.setOnShowListener(new DialogInterface.OnShowListener() {
@Override
public void onShow(DialogInterface dialog) {
try {
if (MinDate!=null&&MaxDate!=null) {
((DatePickerDialog) dialog).getDatePicker().setMaxDate(MaxDate.getTimeInMillis());
((DatePickerDialog) dialog).getDatePicker().setMinDate(MinDate.getTimeInMillis());
}
} catch (NullPointerException e) {
dialog.dismiss();
e.printStackTrace();
}
}
});
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
return dd;
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
}
}
并使用它:
dialogFragment = new DatePickerDialogFragment(new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
Calendar cal = GregorianCalendar.getInstance();
cal.set( year, monthOfYear, dayOfMonth);
String currentDateandTime = sdf.format( cal.getTime());
et_date.setText(currentDateandTime);
}
}, context);
并显示它
dialogFragment.show(getFragmentManager(), "Date");