Reputation: 2184
Hi i was implementing onDatesetListener in Fragment using DatePickerDialog.
class LeaveManagerFragment extends Fragment implements DatePickerDialog.OnDateSetListener
editText_toDate.setOnClickListener(new View.OnClickListener() {
@RequiresApi(api = Build.VERSION_CODES.N)
@Override
public void onClick(View v) {
clickedEditText = 2;
DatePickerDialog datePickerDialog = new DatePickerDialog(getContext(), date, myCalendar
.get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
myCalendar.get(Calendar.DAY_OF_MONTH));
datePickerDialog.setOnDateSetListener(getContext());
datePickerDialog.show();
}
});
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
System.out.println("Date set");
}
I was getting the following error in passing getContext() in datePickerDialog.setOnDateSetListener(getContext());
setOnDateSetListener (android.app.DatePickerDialog.OnDateSetListener) in DatePickerDialog cannot be applied to (android.content.Context)
How to implement .ondatesetListener in Fragment?
Upvotes: 0
Views: 3411
Reputation: 372
Just Pass,
DatePickerDialog datePickerDialog = new DatePickerDialog(LeaveManagerFragment.this, date, myCalendar
.get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
myCalendar.get(Calendar.DAY_OF_MONTH));
instead of,
DatePickerDialog datePickerDialog = new DatePickerDialog(getContext(), date, myCalendar
.get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
myCalendar.get(Calendar.DAY_OF_MONTH));
Upvotes: 0
Reputation: 521
you have to set OnDateSetListener their but you are giving activity context which does not implements OnDateSetListener, you have to pass your fragment which has implementation of OnDateSetListener as object instead of passing getContext check this:
class LeaveManagerFragment extends Fragment implements DatePickerDialog.OnDateSetListener
editText_toDate.setOnClickListener(new View.OnClickListener() {
@RequiresApi(api = Build.VERSION_CODES.N)
@Override
public void onClick(View v) {
clickedEditText = 2;
DatePickerDialog datePickerDialog = new DatePickerDialog(getContext(),LeaveManagerFragment.this myCalendar
.get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
myCalendar.get(Calendar.DAY_OF_MONTH));
datePickerDialog.show();
}
});
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
System.out.println("Date set");
}
}
Upvotes: 0
Reputation: 1651
Try this:- Instead of
datePickerDialog.setOnDateSetListener(getContext());
use this
datePickerDialog.setOnDateSetListener(getActivity());
Upvotes: 0
Reputation: 790
You have to add date :
datePickerDialog.setOnDateSetListener(new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
}
});
Upvotes: 1
Reputation: 8841
Make this change
datePickerDialog.setOnDateSetListener(LeaveManagerFragment.this);
It means that your class i.e. the fragment implements the date set listener interface.
Upvotes: 1