无法在 TimePickerDIalog 中解析方法 DateFormat.is24HourFormat

Cannot resolve method DateFormat.is24HourFormat in TimePickerDIalog

我正在尝试拥有一个日期选择器和一个扩展对话框片段的时间选择器。当我 运行 应用程序时,我能够获得日期选择器,但是当我添加时间选择器时,我收到错误无法解析方法 DateFormat.is24HourFormat.

我正在使用导入 android.support.v4.app.DialogFragment;根据 post

但问题仍然存在

主要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()));
    }

}

}

我遇到了同样的问题。我通过导入

解决了它
import android.text.format.DateFormat;

而不是

import android.icu.text.DateFormat;

这是我的,或者在你的情况下我会尝试替换这个:

import java.text.DateFormat;

(参见此处:)

导入

android.text.format.DateFormat;

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

我在生成时遇到问题:DateFormat.is24HourFormat

但我后来能够通过更改导入来使用它:import java.text.DateFormat;

import android.text.format.DateFormat;

所以我可以在我的片段中使用:

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