From 79f1deac51158208136e00931649a23b75c209f2 Mon Sep 17 00:00:00 2001 From: gabrieldonadel Date: Wed, 22 Feb 2023 16:58:02 -0300 Subject: [PATCH 1/2] [android] Fix keyboard crash when casting android.app.Activity --- .../main/java/com/facebook/react/ReactRootView.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java b/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java index 1a6abd1bbba9..ef8499d96ee1 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java +++ b/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java @@ -922,7 +922,11 @@ private Activity getActivity() { while (!(context instanceof Activity) && context instanceof ContextWrapper) { context = ((ContextWrapper) context).getBaseContext(); } - return (Activity) context; + if(context instanceof Activity){ + return (Activity) context; + } + + return null; } @RequiresApi(api = Build.VERSION_CODES.R) @@ -942,7 +946,12 @@ private void checkForKeyboardEvents() { Insets barInsets = rootInsets.getInsets(WindowInsets.Type.systemBars()); int height = imeInsets.bottom - barInsets.bottom; - int softInputMode = getActivity().getWindow().getAttributes().softInputMode; + Activity activity = getActivity(); + if(activity == null){ + return; + } + + int softInputMode = activity.getWindow().getAttributes().softInputMode; int screenY = softInputMode == WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING ? mVisibleViewArea.bottom - height From 1dc052f6169c56e129fbf0739a33b261e88578b8 Mon Sep 17 00:00:00 2001 From: gabrieldonadel Date: Thu, 23 Feb 2023 12:35:28 -0300 Subject: [PATCH 2/2] Address PR comments --- .../src/main/java/com/facebook/react/ReactRootView.java | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java b/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java index ef8499d96ee1..ec15c13fbb7b 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java +++ b/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java @@ -917,16 +917,13 @@ public void onGlobalLayout() { checkForDeviceDimensionsChanges(); } + @Nullable private Activity getActivity() { Context context = getContext(); while (!(context instanceof Activity) && context instanceof ContextWrapper) { context = ((ContextWrapper) context).getBaseContext(); } - if(context instanceof Activity){ - return (Activity) context; - } - - return null; + return (context instanceof Activity) ? (Activity) context : null; } @RequiresApi(api = Build.VERSION_CODES.R) @@ -947,7 +944,7 @@ private void checkForKeyboardEvents() { int height = imeInsets.bottom - barInsets.bottom; Activity activity = getActivity(); - if(activity == null){ + if (activity == null) { return; }