Я работаю над приложением-календарем, в котором события отображаются по номеру дня. Когда я нажимаю на событие, открывается действие DayDetails, где я могу добавить новое событие. Проблема возникает, когда я перехожу из DayDetails обратно в CalendarActivity.
Вот последовательность действий:
События отображаются правильно в CalendarActivity.
При нажатии на событие происходит переход к DayDetails, где я могу просмотреть или добавить дополнительные события.
После добавления события в AddEvent я возвращаюсь назад в DayDetails и он показывает оба.
Проблема возникает, когда я возвращаюсь в CalendarActivity, нажимаю на тот же день (который имеет два события), а затем возвращаюсь в DayDetails.
В этот момент
отображается только событие по умолчанию, а новое добавленное событие
исчезает.
Я убедился, что правильно обновляю список событий, когда возвращаюсь из DayDetails в CalendarActivity.
Я использовал onActivityResult() в DayDetails для обновления данных, но новое событие не появляется, когда я возвращаюсь.
val title = titleEditText.text.toString()
val note = noteEditText.text.toString()
val resultIntent = Intent()
resultIntent.putExtra("EVENT_TITLE", title)
resultIntent.putExtra("EVENT_NOTE", note)
setResult(Activity.RESULT_OK, resultIntent)
finish()
Я работаю над приложением-календарем, в котором события отображаются по номеру дня. Когда я нажимаю на событие, открывается действие DayDetails, где я могу добавить новое событие. Проблема возникает, когда я перехожу из DayDetails обратно в CalendarActivity. Вот последовательность действий: [list] [*]События отображаются правильно в CalendarActivity. [*]При нажатии на событие происходит переход к DayDetails, где я могу просмотреть или добавить дополнительные события. [*]После добавления события в AddEvent я возвращаюсь назад в DayDetails и он показывает оба. [*]Проблема возникает, когда я возвращаюсь в CalendarActivity, нажимаю на тот же день (который имеет два события), а затем возвращаюсь в DayDetails. [*]В этот момент отображается только событие по умолчанию, а новое добавленное событие исчезает. Я убедился, что правильно обновляю список событий, когда возвращаюсь из DayDetails в CalendarActivity. Я использовал onActivityResult() в DayDetails для обновления данных, но новое событие не появляется, когда я возвращаюсь. [/list] [b]CalendarActivity вызывает DayDetails[/b] [code]fun openDayDetails(selectedDay: String, eventTitles: ArrayList, eventNotes: ArrayList) { val intent = Intent(this, DayDetailsActivity::class.java) intent.putExtra("SELECTED_DAY", selectedDay) intent.putExtra("MONTH_YEAR", SimpleDateFormat("MMMM yyyy", Locale.getDefault()).format(calendar.time)) intent.putStringArrayListExtra("EVENT_TITLES", eventTitles) intent.putStringArrayListExtra("EVENT_NOTES", eventNotes) startActivityForResult(intent, 1001) } [/code] [b]DayDetails вызывает AddEvent[/b] [code]val intent = Intent(this, AddEventActivity::class.java) startActivityForResult(intent, 1001) [/code] [b]AddEvent возвращает данные в DayDetails[/b] [code]val title = titleEditText.text.toString() val note = noteEditText.text.toString() val resultIntent = Intent() resultIntent.putExtra("EVENT_TITLE", title) resultIntent.putExtra("EVENT_NOTE", note) setResult(Activity.RESULT_OK, resultIntent) finish() [/code] [b]OnActivityResult из DayDetails[/b] [code]if (requestCode == 1001 && resultCode == RESULT_OK) { val title = data?.getStringExtra("EVENT_TITLE") ?: "" val note = data?.getStringExtra("EVENT_NOTE") ?: "" val rawDateText = dayTextView.text.toString() // "5, November 2024" val inputFormat = SimpleDateFormat("d, MMMM yyyy", Locale.getDefault()) val outputFormat = SimpleDateFormat("dd-MM-yyyy", Locale.getDefault())
// "dd-MM-yyyy" val date = inputFormat.parse(rawDateText)?.let { dateObject -> outputFormat.format(dateObject) } ?: "" events.add(Event(date, title, note)) updateEventList()
val resultIntent = Intent() resultIntent.putParcelableArrayListExtra("UPDATED_EVENTS", ArrayList(events)) setResult(Activity.RESULT_OK, resultIntent) } [/code] [b]OnActivityResult из CalendarActivity[/b] [code]override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) if (requestCode == 2 && resultCode == Activity.RESULT_OK) { val updatedEvents = data?.getParcelableArrayListExtra("UPDATED_EVENTS") if (updatedEvents != null) { events = updatedEvents.toMutableList() (calendarGridView.adapter as? CalendarAdapter)?.updateEvents(events) } } } [/code] Вот как я показываю события при первом открытии CalendarActivity [code]calendar = Calendar.getInstance() updateCalendar() [/code] [b]Обновить календарь[/b] [code]private fun updateCalendar() { val monthFormat = SimpleDateFormat("MMMM yyyy", Locale.getDefault()) monthTextView.text = monthFormat.format(calendar.time) val daysInMonth = getDaysInMonth(calendar) val adapter = CalendarAdapter(this, daysInMonth, calendar, events) calendarGridView.adapter = adapter adapter.notifyDataSetChanged() } [/code] В чем может быть причина проблемы и как ее устранить?