Сначала удалите из вашей MainActivity свой onDateSetListener, а вместо этого добавьте 2 метода onDateSetPicker1 (int year, int month, int day) и onDateSetPicker2 (int year, int month, int day). И тогда в вашем диалоговом фрагменте используйте этот код:
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
super.onCreateDialog(savedInstanceState);
Bundle bundle = this.getArguments();
if (bundle != null) {
mChosenFilter = bundle.getInt("FilterNum");
}
if (getActivity() != null) {
final Calendar c = Calendar.getInstance();
year = c.get(Calendar.YEAR);
month = c.get(Calendar.MONTH);
day = c.get(Calendar.DAY_OF_MONTH);
}
DatePickerDialog.OnDateSetListener listener1 = new DatePickerDialog.OnDateSetListener() {
onDateSet(android.widget.DatePicker view, int year, int month, int day) {
((MainActivity)getActivity()).onDateSetPicker1(int year, int month, int day);
}
}
DatePickerDialog.OnDateSetListener listener2 = new DatePickerDialog.OnDateSetListener() {
onDateSet(android.widget.DatePicker view, int year, int month, int day) {
((MainActivity)getActivity()).onDateSetPicker2(int year, int month, int day);
}
}
DatePickerDialog pickerBefore;
DatePickerDialog pickerAfter;
switch (mChosenFilter) {
case ON_OR_BEFOREFILTER:
pickerBefore = new DatePickerDialog(getActivity(), THEME_DEVICE_DEFAULT_DARK, listener1, year, month, day);
pickerBefore.setTitle("Select 'On or Before' due date");
return pickerBefore;
case ON_OR_AFTERFILTER:
pickerAfter = new DatePickerDialog(getActivity(), THEME_DEVICE_DEFAULT_DARK, listener2, year, month, day);
pickerAfter.setTitle("Select 'On or After' due date");
return pickerAfter;
}
return null;
}
Таким образом, у вас будут разные слушатели в вашем диалоге, и эти разные слушатели будут вызывать разные методы вашей родительской активности.