更新时间:2023-12-03 18:07:34
好,这样您就可以使用alertDialog
中已经建立的监听器了
以下应该是您的CalendarPickerFragment
Ok so you can use the listener you have already craeted in your alertDialog
Following should be your CalendarPickerFragment
public class CalendarPickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {
private CalendarPickerFragment.OnDateReceiveCallBack mListener;
private Context context;
private static CalendarPickerFragment.OnDateReceiveCallBack mListenerForAlertDialog;
public interface OnDateReceiveCallBack {
public void onDateReceive(int dd, int mm, int yy);
}
public static CalendarPickerFragment getInstance(CalendarPickerFragment.OnDateReceiveCallBack callback) {
mListenerForAlertDialog = callback;
return new CalendarPickerFragment();
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
this.context = context;
try {
mListener = (CalendarPickerFragment.OnDateReceiveCallBack) context;
} catch (ClassCastException e) {
throw new ClassCastException(context.toString() + " must implement OnDateSetListener");
}
}
public CalendarPickerFragment() {
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH);
int day = cal.get(Calendar.DAY_OF_MONTH);
return new DatePickerDialog(getActivity(), this, year, month, day);
}
@Override
public void onDateSet(DatePicker datePicker, int i, int i1, int i2) {
Log.d("tag", i + "/" + "/" + i1 + "/" + i2);
mListener.onDateReceive(i, i1, i2);
mListenerForAlertDialog.onDateReceive(i, i1, i2);
}
}
现在按如下所示初始化此fragmnet
Now initialise this fragmnet
as follows
CalendarPickerFragment newFragment = CalendarPickerFragment.getInstance(new CalendarPickerFragment.OnDateReceiveCallBack() {
@Override
public void onDateReceive(int dd, int mm, int yy) {
// boom you wil get the call back on each date selection here
//eidtTextOfALertDialog.setText("whatEver")
}
});
newFragment.show(getFragmentManager(), "DatePicker");