Kanagalingam
Kanagalingam

Reputation: 2184

onDateSetListener in DatePickerDialog in Fragment

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

Answers (5)

RoHiT
RoHiT

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

Vivek Mahajan
Vivek Mahajan

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

Nitin Patel
Nitin Patel

Reputation: 1651

Try this:- Instead of

datePickerDialog.setOnDateSetListener(getContext());

use this

datePickerDialog.setOnDateSetListener(getActivity());

Upvotes: 0

R.R.M
R.R.M

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

Dishonered
Dishonered

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

Related Questions