parent
c32acb9372
commit
ecf257fe70
@ -0,0 +1,79 @@
|
||||
package soc;
|
||||
|
||||
import android.app.DatePickerDialog;
|
||||
import android.app.Dialog;
|
||||
import android.app.TimePickerDialog;
|
||||
import android.os.Bundle;
|
||||
import android.annotation.NonNull;
|
||||
import androidx.fragment.app.DialogFragment;
|
||||
import android.widget.DatePicker;
|
||||
import android.widget.TimePicker;
|
||||
|
||||
import java.util.Calendar;
|
||||
|
||||
public class DateTimePickerDialog extends DialogFragment
|
||||
implements DatePickerDialog.OnDateSetListener, TimePickerDialog.OnTimeSetListener {
|
||||
|
||||
private static final String ARG_DATE = "date";
|
||||
private Calendar date;
|
||||
|
||||
public static DateTimePickerDialog newInstance(Calendar initialDate) {
|
||||
DateTimePickerDialog dialog = new DateTimePickerDialog();
|
||||
Bundle args = new Bundle();
|
||||
args.putSerializable(ARG_DATE, initialDate);
|
||||
dialog.setArguments(args);
|
||||
return dialog;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
if (getArguments() != null) {
|
||||
date = (Calendar) getArguments().getSerializable(ARG_DATE);
|
||||
}
|
||||
if (date == null) {
|
||||
date = Calendar.getInstance();
|
||||
}
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
||||
int year = date.get(Calendar.YEAR);
|
||||
int month = date.get(Calendar.MONTH);
|
||||
int day = date.get(Calendar.DAY_OF_MONTH);
|
||||
|
||||
// 创建一个新的 DatePickerDialog 实例并返回
|
||||
return new DatePickerDialog(requireActivity(), this, year, month, day);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDateSet(DatePicker view, int year, int month, int day) {
|
||||
date.set(Calendar.YEAR, year);
|
||||
date.set(Calendar.MONTH, month);
|
||||
date.set(Calendar.DAY_OF_MONTH, day);
|
||||
|
||||
int hour = date.get(Calendar.HOUR_OF_DAY);
|
||||
int minute = date.get(Calendar.MINUTE);
|
||||
|
||||
// 创建新的 TimePickerDialog 实例并显示
|
||||
new TimePickerDialog(requireActivity(), this, hour, minute, true).show();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
|
||||
date.set(Calendar.HOUR_OF_DAY, hourOfDay);
|
||||
date.set(Calendar.MINUTE, minute);
|
||||
|
||||
// 通知监听器(如果有的话)关于选定的日期和时间
|
||||
if (getTargetFragment() != null && getTargetFragment() instanceof OnDateTimeSetListener) {
|
||||
((OnDateTimeSetListener) getTargetFragment()).onDateTimeSet(date);
|
||||
} else if (getActivity() instanceof OnDateTimeSetListener) {
|
||||
((OnDateTimeSetListener) getActivity()).onDateTimeSet(date);
|
||||
}
|
||||
}
|
||||
|
||||
public interface OnDateTimeSetListener {
|
||||
void onDateTimeSet(Calendar date);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in new issue