Вот последовательность действий:
- События отображаются правильно в CalendarActivity.
- При нажатии на событие происходит переход к DayDetails, где я могу просмотреть или добавить дополнительные события.
- После добавления события в AddEvent я возвращаюсь назад в DayDetails, и он показывает оба.
- Проблема возникает, когда я возвращаюсь в CalendarActivity, нажимаю на тот же день (который имеет два события), а затем возвращаюсь в DayDetails.
- На этом
этапе отображается только событие по умолчанию, а вновь добавленное событие
исчезает.
Я убедился, что правильно обновляю список событий, когда возвращаюсь из DayDetails в CalendarActivity.
Я использовал onActivityResult() в DayDetails для обновления данных, но новое событие не появляется, когда я возвращаюсь.
Код: Выделить всё
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)
}
Код: Выделить всё
val intent = Intent(this, AddEventActivity::class.java)
startActivityForResult(intent, 1001)
Код: Выделить всё
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()
Код: Выделить всё
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)
}
Код: Выделить всё
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)
}
}
}
Код: Выделить всё
calendar = Calendar.getInstance()
updateCalendar()
Код: Выделить всё
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()
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... activity-i