0

My Android app crashlytics have log this error:

androidx.fragment.app.Fragment.performSaveInstanceState
Fragment.java, line 3292
java.lang.NullPointerException: Attempt to invoke virtual method 'com.google.android.material.datepicker.Month com.google.android.material.datepicker.MaterialCalendar.getCurrentMonth()' on a null object 
reference
com.google.android.material.datepicker.MaterialDatePicker.onSaveInstanceState MaterialDatePicker.java:154
androidx.fragment.app.Fragment.performSaveInstanceState Fragment.java:3292
androidx.fragment.app.FragmentStateManager.saveBasicState FragmentStateManager.java:681
androidx.fragment.app.FragmentStateManager.saveState FragmentStateManager.java:647
androidx.fragment.app.FragmentStore.saveActiveFragments FragmentStore.java:214
androidx.fragment.app.FragmentManager.saveAllStateInternal FragmentManager.java:2371
androidx.fragment.app.Fragment.performSaveInstanceState Fragment.java:3294
androidx.fragment.app.FragmentStateManager.saveBasicState FragmentStateManager.java:681
androidx.fragment.app.FragmentStateManager.saveState FragmentStateManager.java:647
androidx.fragment.app.FragmentStore.saveActiveFragments FragmentStore.java:214
androidx.fragment.app.FragmentManager.saveAllStateInternal FragmentManager.java:2371
androidx.fragment.app.Fragment.performSaveInstanceState Fragment.java:3294
androidx.fragment.app.FragmentStateManager.saveBasicState FragmentStateManager.java:681
androidx.fragment.app.FragmentStateManager.saveState FragmentStateManager.java:647
androidx.fragment.app.FragmentStore.saveActiveFragments FragmentStore.java:214
androidx.fragment.app.FragmentManager.saveAllStateInternal FragmentManager.java:2371

This does not occur all the time but most of the affected OS was in 11, 12 and 13 and mostly on Samsung Galaxy devices

I am currently using

  implementation 'com.google.android.material:material:1.4.0'

Do you happen to know how to avoid this?

Han
  • 21
  • 6

1 Answers1

0

You can get current Month using Material Library Using following code.


fun Calendar.getCurrentMonth(): Pair<String, String> {
// add -1 month to current month
    add(Calendar.MONTH, 0)
// set DATE to 1, so first date of previous month
    this[Calendar.DATE] = 1
    val firstDateOfPreviousMonth = time
// set actual maximum date of previous month
    this[Calendar.DATE] = getActualMaximum(Calendar.DAY_OF_MONTH)
//read it
    val lastDateOfPreviousMonth = time
    return Pair(
        firstDateOfPreviousMonth.format("yyyy-MM-dd"),
        lastDateOfPreviousMonth.format("yyyy-MM-dd")
    )
}