I'm trying to unlock the application, it gives an error, and everything works fine. As it seems to me DatePickerFragment swears. What is it? How to fix?
Is there a problem here?
//Календарь возвращает текущее время final Calendar calendar = Calendar.getInstance(); //Добавим к времени час если указана только дата (без времени), для срабатывания. calendar.set(Calendar.HOUR_OF_DAY, calendar.get(Calendar.HOUR_OF_DAY) + 1 ); //Слушатель для выбора Даты etDate.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //Проверка на длину текста в поле if (etDate.length() == 0) { etDate.setText(" "); } DialogFragment datePickerFragment = new DatePickerFragment() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { calendar.set(Calendar.YEAR, year); calendar.set(Calendar.MONTH, monthOfYear); calendar.set(Calendar.DAY_OF_MONTH, dayOfMonth); etDate.setText(Utils.getDate(calendar.getTimeInMillis())); } //При нажатии "Отмена" текст не устанавливался @Override public void onCancel(DialogInterface dialog) { etDate.setText(null); } }; datePickerFragment.show(getFragmentManager(), "DatePickerFragment"); } }); //Слушатель для выбора Времени etTime.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (etTime.length() == 0){ etTime.setText(" "); } DialogFragment timePickerFragment = new TimePickerFragment() { @Override public void onTimeSet(TimePicker view, int hourOfDay, int minute) { calendar.set(Calendar.HOUR_OF_DAY, hourOfDay); calendar.set(Calendar.MINUTE, minute); calendar.set(Calendar.SECOND, 0); etTime.setText(Utils.getTime(calendar.getTimeInMillis())); } @Override public void onCancel(DialogInterface dialog) { etTime.setText(null); } }; timePickerFragment.show(getFragmentManager(), "TimePickerFragment "); } }); builder.setPositiveButton(R.string.dialog_add, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { task.setTitle(etTitle.getText().toString()); task.setStatus(ModelTask.STATUS_CURRENT); if (etDate.length() != 0 || etTime.length() != 0 ){ task.setDate(calendar.getTimeInMillis()); AlarmHelper alarmHelper = AlarmHelper.getInstance(); alarmHelper.setAlarm(task); } task.setStatus(ModelTask.STATUS_CURRENT); addingTaskListener.onTaskAdded(task); dialog.dismiss(); } }); builder.setNegativeButton(R.string.dialog_cancel, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { addingTaskListener.onTaskAddingCancel(); dialog.cancel(); } }); Class DatePickerFragment
public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { Calendar c = Calendar.getInstance(); int year = c.get(Calendar.YEAR); int month = c.get(Calendar.MONTH); int day = c.get(Calendar.DAY_OF_MONTH); return new DatePickerDialog(getActivity(), this, year, month, day); } @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { } The fragment is taken out separately ...
I did as they said the check showed this piece of code, below I will indicate the line
@Override public void addTask(ModelTask newTask, boolean saveToDB) { int position = -1; ModelSeparator separator = null; for (int i = 0; i < adapter.getItemCount(); i++) { if (adapter.getItem(i).isTask()) { ModelTask task = (ModelTask) adapter.getItem(i); if (newTask.getDate() < task.getDate()) { position = i; break; } } } if (newTask.getDate() != 0) { Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(newTask.getDate()); if (calendar.get(Calendar.YEAR) < Calendar.getInstance().get(Calendar.YEAR)) { newTask.setDateStatus(ModelSeparator.TYPE_OVERDUE); if (!adapter.containsSeparatorOverdue) { adapter.containsSeparatorOverdue = true; separator = new ModelSeparator(ModelSeparator.TYPE_OVERDUE); } } else if (calendar.get(Calendar.YEAR) > Calendar.getInstance().get(Calendar.YEAR)) { newTask.setDateStatus(ModelSeparator.TYPE_FUTURE); if (!adapter.containsSeparatorFuture) { adapter.containsSeparatorFuture = true; separator = new ModelSeparator(ModelSeparator.TYPE_FUTURE); } } else if (calendar.get(Calendar.DAY_OF_YEAR) < Calendar.getInstance().get(Calendar.DAY_OF_YEAR) && calendar.get(Calendar.YEAR) == Calendar.getInstance().get(Calendar.YEAR)) { newTask.setDateStatus(ModelSeparator.TYPE_OVERDUE); if (!adapter.containsSeparatorOverdue) { adapter.containsSeparatorOverdue = true; separator = new ModelSeparator(ModelSeparator.TYPE_OVERDUE); } } else if (calendar.get(Calendar.DAY_OF_YEAR) == Calendar.getInstance().get(Calendar.DAY_OF_YEAR) && calendar.get(Calendar.YEAR) == Calendar.getInstance().get(Calendar.YEAR)) { newTask.setDateStatus(ModelSeparator.TYPE_TODAY); if (!adapter.containsSeparatorToday) { adapter.containsSeparatorToday = true; separator = new ModelSeparator(ModelSeparator.TYPE_TODAY); } } else if (calendar.get(Calendar.DAY_OF_YEAR) == Calendar.getInstance().get(Calendar.DAY_OF_YEAR) + 1 && // <-- Ругается на эту строку на кусок после "==" - Сообщение такое - "Must be one of: Calendar.SUNDAY, Calendar.MONDAY, Calendar.TUESDAY, Calendar.WEDNESDAY, Calendar.THURSDAY, Calendar.FRIDAY, Calendar.SATURDAY less... (Ctrl+F1)" calendar.get(Calendar.YEAR) == Calendar.getInstance().get(Calendar.YEAR)) { newTask.setDateStatus(ModelSeparator.TYPE_TOMORROW); if (!adapter.containsSeparatorTomorrow) { adapter.containsSeparatorTomorrow = true; separator = new ModelSeparator(ModelSeparator.TYPE_TOMORROW); } } else if (calendar.get(Calendar.DAY_OF_YEAR) > Calendar.getInstance().get(Calendar.DAY_OF_YEAR) + 1 && calendar.get(Calendar.YEAR) == Calendar.getInstance().get(Calendar.YEAR)) { newTask.setDateStatus(ModelSeparator.TYPE_FUTURE); if (!adapter.containsSeparatorFuture) { adapter.containsSeparatorFuture = true; separator = new ModelSeparator(ModelSeparator.TYPE_FUTURE); } } }