Cannot resolve method DateFormat.is24HourFormat in TimePickerDIalog

9.2k views Asked by At

I am trying to have a Date picker and a time picker that extends dialog fragment. I am able to get the Date picker when I run the app, however when I added the time picker, I am getting an error cannot resolve method DateFormat.is24HourFormat.

I am using import android.support.v4.app.DialogFragment; as per the post

TimepickerFragment show() method cannot be resolved

but the issue still persists

Main activity

import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.TimePickerDialog;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.DatePicker;
import android.widget.TextView;
import android.widget.TimePicker;
import java.text.DateFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;



public class MainActivity extends AppCompatActivity implements DatePickerDialog.OnDateSetListener, TimePickerDialog.OnTimeSetListener {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}


public void datePicker(View view) {
    DatePickerFragment fragment = new DatePickerFragment();
    fragment.show(getSupportFragmentManager(), "date");
}

public void TimePicker(View view) {
    TimePickerFragment fragment = new TimePickerFragment();
    fragment.show(getSupportFragmentManager(), "time");
}


private void setDate(final GregorianCalendar calendar) {

    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
        final DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.MEDIUM);
        ((TextView) findViewById(R.id.pic_date)).setText(dateFormat.format(calendar.getTime()));
    }
}


@Override
public void onDateSet(DatePicker view, int year, int month, int day) {
    GregorianCalendar cal = null;
    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
        cal = new GregorianCalendar(year, month, day);
    }
    setDate(cal);
}

@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
    Calendar cal = null;
    ((TextView) findViewById(R.id.start_time)).setText(String.valueOf(hourOfDay)+ String.valueOf(minute));
}


public static class DatePickerFragment extends DialogFragment {

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        // Use the current date as the default date in the picker
        final Calendar c = Calendar.getInstance();
        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH);
        int day = c.get(Calendar.DAY_OF_MONTH);

        // Create a new instance of DatePickerDialog and return it
        return new DatePickerDialog(getActivity(), (DatePickerDialog.OnDateSetListener) getActivity(), year, month, day);
    }

}

public static class TimePickerFragment extends DialogFragment {

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        // Use the current date as the default date in the picker
        final Calendar c = Calendar.getInstance();
        int hour = c.get(Calendar.HOUR_OF_DAY);
        int minute = c.get(Calendar.MINUTE);

        // Create a new instance of DatePickerDialog and return it
        return new TimePickerDialog(getActivity(), this, hour, minute, DateFormat.is24HourFormat(getActivity()));
    }

}

}

3

There are 3 answers

0
cookie_time On BEST ANSWER

I had the same problem. I resolved it by importing

import android.text.format.DateFormat;

instead of

import android.icu.text.DateFormat;

which is what I had, or in your case I would try replacing this:

import java.text.DateFormat;

(see here: https://stackoverflow.com/a/15100358/3615383 )

0
Akash Chavda On

Import the

android.text.format.DateFormat;

or

android.text.format.DateFormat.is24HourFormat(getActivity())

0
Bukunmi On

I had issues generating : DateFormat.is24HourFormat

but i was later able to use it by changing the import from : import java.text.DateFormat;

to import android.text.format.DateFormat;

so i can use in my fragment like :

TimePickerDialog timePickerDialog = new TimePickerDialog(getActivity(), (TimePickerDialog.OnTimeSetListener) getActivity(),
            hour, minute, DateFormat.is24HourFormat(getActivity()));