fix(android): check if selectedItemId has changed before setting
#3384
+66
−2
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.
Description
onNativeFocusChangeis called on android after closing a screen "on top of" a screen having bottom tabs. This is because we are settingbottomNavigationView.selectedItemIdinupdateBottomNavigationViewAppearanceeven though it have not changed becauseonNavigationItemSelectedListeneris notified on reselectThis differs from the implementation on iOS (where
onNativeFocusChangeis only called on tab press) and creates some problems. For example will "tab press" be emitted in react-navigation causing the scrollview in the tab to scroll to top after closing a modal. Or if there is a nested stack in the tab, the stack will pop to the route on index 0.Changes
Check that
selectedItemIdhas changed before setting it tobottomNavigationView.selectedItemIdScreenshots / GIFs
Before
Screen.Recording.2025-11-10.at.20.44.33.mov
After
Screen.Recording.2025-11-10.at.20.46.07.mov
Test code and steps to reproduce
I've created a new test named "Test3384".
Checklist