Calendar
Calendar copied to clipboard
CalendarView scrolling to current month when navigating back to calendar
Hello, i have struggles when navigating back to my calendar view fragment.
E/WorkoutsOverviewFragmentViewModel$monthScrollListener: java.lang.RuntimeException: HAHA monthScrollListener 2022-02-01 CalendarMonth { first = CalendarDay { date = 2022-03-28, owner = PREVIOUS_MONTH}, last = CalendarDay { date = 2022-05-08, owner = NEXT_MONTH}} indexInSameMonth = 0, numberOfSameMonth = 1
at sk.macro.befit.workout.vm.WorkoutsOverviewFragmentViewModel$monthScrollListener$1.invoke(WorkoutsOverviewFragmentViewModel.kt:225)
at sk.macro.befit.workout.vm.WorkoutsOverviewFragmentViewModel$monthScrollListener$1.invoke(WorkoutsOverviewFragmentViewModel.kt:222)
at com.kizitonwose.calendarview.ui.CalendarAdapter.notifyMonthScrollListenerIfNeeded(CalendarAdapter.kt:201)
at com.kizitonwose.calendarview.ui.CalendarAdapter$onAttachedToRecyclerView$1.run(CalendarAdapter.kt:59)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:236)
at android.app.ActivityThread.main(ActivityThread.java:7904)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:656)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:967)
There is a log. Problem stand in calling month scroll from notifyMonthScrollListenerIfNeeded(CalendarAdapter.kt:201).
Here is my logic of MonthScrollListener
override val monthScrollListener: MonthScrollListener = { month ->
calendarHeaderText.value = "${month.month.toMonthName()} ${month.yearMonth.year}"
val today = LocalDate.now()
if (month.month == today.monthValue && month.year == today.year) {
val currentSelectedDate = selectedDate.value
// currently selected date is from current month (going back from navigation)
if (currentSelectedDate != null && currentSelectedDate.month.value == month.month) {
viewModelScope.launch {
updateDateEvent.send(currentSelectedDate)
}
updateAdapterForSpecificDate(currentSelectedDate)
} else {
selectedDate.value?.let {
viewModelScope.launch {
updateDateEvent.send(it)
}
workoutItems.value = emptyList()
}
selectedDate.value = today
viewModelScope.launch {
updateDateEvent.send(today)
}
}
} else {
selectedDate.value?.let {
// Clear selection if we scroll to a new month.
selectedDate.value = null
viewModelScope.launch {
updateDateEvent.send(it)
}
workoutItems.value = emptyList()
}
}
}
@kizitonwose Can you help me to find proper way to handle back pressed?
The exception in the log is not clear. It just says java.lang.RuntimeException: HAHA ....
?