Не удается разрешить метод DateFormat.is24HourFormat в TimePickerDialog

Я пытаюсь иметь средство выбора даты и средство выбора времени, которое расширяет фрагмент диалога. Я могу получить средство выбора даты при запуске приложения, однако, когда я добавил средство выбора времени, я получаю сообщение об ошибке, не могу разрешить метод DateFormat.is24HourFormat.

Я использую импорт android.support.v4.app.DialogFragment; согласно посту

метод TimepickerFragment show() не может быть разрешен

но проблема все еще сохраняется

Основная деятельность

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

}

}


person Mahesh N    schedule 06.01.2017    source источник


Ответы (3)


У меня такая же проблема. Я решил это, импортировав

import android.text.format.DateFormat;

вместо

import android.icu.text.DateFormat;

это то, что у меня было, или в вашем случае я бы попробовал заменить это:

import java.text.DateFormat;

(см. здесь: https://stackoverflow.com/a/15100358/3615383)

person cookie_time    schedule 15.01.2017

Импортировать

android.text.format.DateFormat;

or

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

person Akash Chavda    schedule 14.05.2018

У меня были проблемы с созданием: DateFormat.is24HourFormat

но позже я смог использовать его, изменив импорт с: import java.text.DateFormat;

to import android.text.format.DateFormat;

поэтому я могу использовать в своем фрагменте, например:

TimePickerDialog timePickerDialog = new TimePickerDialog(getActivity(), (TimePickerDialog.OnTimeSetListener) getActivity(),
            hour, minute, DateFormat.is24HourFormat(getActivity()));
person Bukunmi    schedule 26.10.2018