You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
2.7 KiB
80 lines
2.7 KiB
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);
|
|
}
|
|
}
|