Apply badge state restoration on the view itself #478
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What?
If you try to use a badge after a restore instance state, you receive an error that the view state was improperly restored (causing a crash)
This is most easily visible (and frustrating) when trying to use the library in conjunction with Instant Run, which causes view state restoration a lot, but also happens on rotation. I've modified the BadgeActivity to apply the badge in
onResume()
which will also crash without this fix.Reproduction steps
In the BadgeActivity, move the
setBadgeCount()
call intoonResume()
, and then rotate the device. You should receive this error:This is happening because the view state is not being restored on the custom view itself.
How to fix
This PR implements the solution proposed by this Stack Overflow answer. Modified unit tests to work with the new changes as well.
You can test this by running the PR, opening the badge activity, and rotating the screen. It should no longer exhibit the crash.