Search code examples
androidclasscastexceptiontimepicker

TimePickerDialog in a Fragment Class


Can I implement

TimePickerDialog.OnTimeSetListener

in a Fragment class?

if it is possible HOW?

this is my TimePickerFragment.class

public class TimePickerFragment extends DialogFragment {


@NonNull
@Override

public Dialog onCreateDialog(Bundle savedInstanceState) {
    Calendar c = Calendar.getInstance();
    int cHour = c.get(Calendar.HOUR_OF_DAY);
    int cMinute = c.get(Calendar.MINUTE);

    return new TimePickerDialog(getActivity(), (TimePickerDialog.OnTimeSetListener) getActivity(), cHour, cMinute, android.text.format.DateFormat.is24HourFormat(getActivity()));
}
}

do I need to modify this code so i can use it in a Fragment class?

this is where i want to implement it

public class BluetoothFragment extends Fragment

i have already tried it but i'm getting this error

java.lang.ClassCastException: com.example.android.bluetoothplantdroid.MainActivity cannot be cast to android.app.TimePickerDialog$OnTimeSetListener

Solution

  • Follow below Code : Pass Activity or Fragment context .

    public static void setTimeFromTimePicker(Context context, EditText editText) {
    
            int hourOfDay, minute;
    
            final Calendar c = Calendar.getInstance();
            hourOfDay = c.get(Calendar.HOUR_OF_DAY);
            minute = c.get(Calendar.MINUTE);
    
            TimePickerDialog dpd = new TimePickerDialog(context, (timePicker, hourOfDay1, minute1) -> {
    
                Time time = new Time(hourOfDay1, minute1, 0);
    
                SimpleDateFormat simpleDateFormat = new 
                SimpleDateFormat("hh:mm aa", Locale.getDefault());
                String s = simpleDateFormat.format(time);
                editText.setText(s);
            }, hourOfDay, minute, false);
    
            dpd.show();
        }