-
Notifications
You must be signed in to change notification settings - Fork 24.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Android: ClassCastException crashes the app in ReactRootView.java when software keyboard is shown #40754
Labels
API: Keyboard
Needs: Triage 🔍
Platform: Android
Android applications.
Resolution: PR Submitted
A pull request with a fix has been provided.
Comments
cortinico
added
the
Resolution: PR Submitted
A pull request with a fix has been provided.
label
Oct 13, 2023
hurali97
pushed a commit
to hurali97/react-native
that referenced
this issue
Dec 19, 2023
…eyboard is shown (facebook#40755) Summary: Fixes facebook#40754 Hi all! We noticed that our app started to crash after bumping to RN v0.71.13, anyways after a deeper investigation we also found that the crash occurs in the latest version as well. Crash log: ``` E FATAL EXCEPTION: main Process: com.nfl.fantasy.core.android.debug, PID: 6034 java.lang.ClassCastException: android.app.ContextImpl cannot be cast to android.app.Activity at com.facebook.react.ReactRootView$CustomGlobalLayoutListener.getActivity(ReactRootView.java:926) at com.facebook.react.ReactRootView$CustomGlobalLayoutListener.checkForKeyboardEvents(ReactRootView.java:946) at com.facebook.react.ReactRootView$CustomGlobalLayoutListener.onGlobalLayout(ReactRootView.java:912) at android.view.ViewTreeObserver.dispatchOnGlobalLayout(ViewTreeObserver.java:1061) ``` The code which causes ClassCastException is following [here](https://github.com/facebook/react-native/blob/ea88fbe229e1d276753ee8e118184274fc872138/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java#L864). In this code explicit type conversion to Activity is not safe because it's not guaranteed by the compiler that context will be compatible with Activity type. The appropriate issue [has been filed](facebook#40754). <!-- Help reviewers and the release process by writing your own changelog entry. Pick one each for the category and type tags: [ANDROID|GENERAL|IOS|INTERNAL] [BREAKING|ADDED|CHANGED|DEPRECATED|REMOVED|FIXED|SECURITY] - Message For more details, see: https://reactnative.dev/contributing/changelogs-in-pull-requests --> [ANDROID] [FIXED] - Fixed crash occurring in certain native views when keyboard events are fired. Pull Request resolved: facebook#40755 Test Plan: Tested it manually with the [reference application](https://github.com/kot331107/rnCrashReproducer). Repro steps are as follows: - Build and run the app on Android - Tap the button "Open Modal" - You should see the red popup fragment to the bottom of the screen - Tap on the text input to open software keyboard - Expected: it should show the keyboard and no crash happens. Reviewed By: arushikesarwani94 Differential Revision: D50198424 Pulled By: NickGerleman fbshipit-source-id: a5a6d86334856f4ffbe818150da5793380da4702
lunaleaps
pushed a commit
that referenced
this issue
Jan 3, 2024
* Fix android platform border color (#39893) Summary: If you try to apply PlatformColor to borders on Android app will crash with the next error: "Error while updating property 'borderColor' of a view managed by: RCTView" ## Changelog: [ANDROID] [FIXED] - Fix android crash when apply PlatformColor to borders Pull Request resolved: #39893 Test Plan: In RNTester example, go to APIs -> PlatformColor | Before | After | | ----------- | ----------- | | <img src="https://github.com/facebook/react-native/assets/70860930/66ac2880-53da-4438-bd9a-332f8ea40645" alt="drawing" width="200"/> | <img src="https://github.com/facebook/react-native/assets/70860930/151f58a1-d857-4b3d-9ec6-de74eb065127" alt="drawing" width="200"/> | Reviewed By: NickGerleman Differential Revision: D50011758 Pulled By: javache fbshipit-source-id: ea06c18c6aef4b6731e9b9b87422a1e0d13de208 * Android: fix ClassCastException in ReactRootView.java when software keyboard is shown (#40755) Summary: Fixes #40754 Hi all! We noticed that our app started to crash after bumping to RN v0.71.13, anyways after a deeper investigation we also found that the crash occurs in the latest version as well. Crash log: ``` E FATAL EXCEPTION: main Process: com.nfl.fantasy.core.android.debug, PID: 6034 java.lang.ClassCastException: android.app.ContextImpl cannot be cast to android.app.Activity at com.facebook.react.ReactRootView$CustomGlobalLayoutListener.getActivity(ReactRootView.java:926) at com.facebook.react.ReactRootView$CustomGlobalLayoutListener.checkForKeyboardEvents(ReactRootView.java:946) at com.facebook.react.ReactRootView$CustomGlobalLayoutListener.onGlobalLayout(ReactRootView.java:912) at android.view.ViewTreeObserver.dispatchOnGlobalLayout(ViewTreeObserver.java:1061) ``` The code which causes ClassCastException is following [here](https://github.com/facebook/react-native/blob/ea88fbe229e1d276753ee8e118184274fc872138/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java#L864). In this code explicit type conversion to Activity is not safe because it's not guaranteed by the compiler that context will be compatible with Activity type. The appropriate issue [has been filed](#40754). <!-- Help reviewers and the release process by writing your own changelog entry. Pick one each for the category and type tags: [ANDROID|GENERAL|IOS|INTERNAL] [BREAKING|ADDED|CHANGED|DEPRECATED|REMOVED|FIXED|SECURITY] - Message For more details, see: https://reactnative.dev/contributing/changelogs-in-pull-requests --> [ANDROID] [FIXED] - Fixed crash occurring in certain native views when keyboard events are fired. Pull Request resolved: #40755 Test Plan: Tested it manually with the [reference application](https://github.com/kot331107/rnCrashReproducer). Repro steps are as follows: - Build and run the app on Android - Tap the button "Open Modal" - You should see the red popup fragment to the bottom of the screen - Tap on the text input to open software keyboard - Expected: it should show the keyboard and no crash happens. Reviewed By: arushikesarwani94 Differential Revision: D50198424 Pulled By: NickGerleman fbshipit-source-id: a5a6d86334856f4ffbe818150da5793380da4702 * chore: bump podfile.lock --------- Co-authored-by: Ivan Alexandrov <axinvd@gmail.com> Co-authored-by: Filipp Mikheev <kot331107@gmail.com>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
API: Keyboard
Needs: Triage 🔍
Platform: Android
Android applications.
Resolution: PR Submitted
A pull request with a fix has been provided.
Description
The code which causes
ClassCastException
is following here.The PR which introduced the crash is following here
We noticed that our app started to crash after bumping to RN v0.71.13, anyways after a deeper investigation we also found that the crash occurs in the latest version as well.
Crash log:
The conditions seems to be:
Fragment
is shown above the mainActivity
in the bottom part of the screen (it should be in the part of the screen where the software keyboard is supposed to be presented)Fragment
to the top of the screen to make sure both are be visible on the screen.In this code explicit type conversion to
Activity
is not safe because it's not guaranteed by the compiler thatcontext
will be compatible withActivity
type.A reference app to reproduce the crash on the latest version of
react-native
is enclosed.React Native Version
0.71.13 and also reproducible with the latest version
Output of
npx react-native info
WARNING: You should run npx react-native@latest to ensure you're always using the most current version of the CLI. NPX has cached version (0.73.0-rc.1) != current release (0.72.5)
info Fetching system and libraries information...
System:
OS: macOS 13.6
CPU: (10) arm64 Apple M1 Pro
Memory: 7.19 GB / 32.00 GB
Shell:
version: "5.9"
path: /bin/zsh
Binaries:
Node:
version: 18.12.1
path: /usr/local/bin/node
Yarn:
version: 1.22.19
path: /opt/homebrew/bin/yarn
npm:
version: 8.19.2
path: /usr/local/bin/npm
Watchman:
version: 2023.10.02.00
path: /opt/homebrew/bin/watchman
Managers:
CocoaPods: Not Found
SDKs:
iOS SDK:
Platforms:
- DriverKit 23.0
- iOS 17.0
- macOS 14.0
- tvOS 17.0
- watchOS 10.0
Android SDK:
Android NDK: 22.1.7171670
IDEs:
Android Studio: 2022.3 AI-223.8836.35.2231.10811636
Xcode:
version: 15.0/15A240d
path: /usr/bin/xcodebuild
Languages:
Java:
version: 11.0.15
path: /Library/Java/JavaVirtualMachines/amazon-corretto-11.jdk/Contents/Home/bin/javac
Ruby:
version: 2.6.10
path: /Users/film/.rbenv/shims/ruby
npmPackages:
"@react-native-community/cli": Not Found
react:
installed: 18.2.0
wanted: 18.2.0
react-native:
installed: 0.73.0-rc.1
wanted: 1000.0.0
react-native-macos: Not Found
npmGlobalPackages:
"react-native": Not Found
Android:
hermesEnabled: true
newArchEnabled: false
iOS:
hermesEnabled: Not found
newArchEnabled: Not found
Steps to reproduce
Expected: it should show the keyboard and no crash happens
Snack, screenshot, or link to a repository
https://github.com/kot331107/rnCrashReproducer
The text was updated successfully, but these errors were encountered: