diff --git a/android/src/main/java/com/capacitorjs/plugins/keyboard/Keyboard.java b/android/src/main/java/com/capacitorjs/plugins/keyboard/Keyboard.java index e1a2ce5..7bb39e3 100644 --- a/android/src/main/java/com/capacitorjs/plugins/keyboard/Keyboard.java +++ b/android/src/main/java/com/capacitorjs/plugins/keyboard/Keyboard.java @@ -58,10 +58,12 @@ public Keyboard(AppCompatActivity activity, boolean resizeOnFullScreen) { rootView = content.getRootView(); ViewCompat.setOnApplyWindowInsetsListener(rootView, (v, insets) -> { - boolean showingKeyboard = ViewCompat.getRootWindowInsets(rootView).isVisible(WindowInsetsCompat.Type.ime()); + WindowInsetsCompat rootInsets = ViewCompat.getRootWindowInsets(rootView); + if (rootInsets == null) return insets; + boolean showingKeyboard = rootInsets.isVisible(WindowInsetsCompat.Type.ime()); - if (showingKeyboard && resizeOnFullScreen) { - possiblyResizeChildOfContent(true); + if (resizeOnFullScreen) { + possiblyResizeChildOfContent(showingKeyboard); } return insets; @@ -85,8 +87,9 @@ public WindowInsetsAnimationCompat.BoundsCompat onStart( @NonNull WindowInsetsAnimationCompat animation, @NonNull WindowInsetsAnimationCompat.BoundsCompat bounds ) { - boolean showingKeyboard = ViewCompat.getRootWindowInsets(rootView).isVisible(WindowInsetsCompat.Type.ime()); WindowInsetsCompat insets = ViewCompat.getRootWindowInsets(rootView); + if (insets == null) return super.onStart(animation, bounds); + boolean showingKeyboard = insets.isVisible(WindowInsetsCompat.Type.ime()); int imeHeight = insets.getInsets(WindowInsetsCompat.Type.ime()).bottom; DisplayMetrics dm = activity.getResources().getDisplayMetrics(); final float density = dm.density; @@ -106,8 +109,9 @@ public WindowInsetsAnimationCompat.BoundsCompat onStart( @Override public void onEnd(@NonNull WindowInsetsAnimationCompat animation) { super.onEnd(animation); - boolean showingKeyboard = ViewCompat.getRootWindowInsets(rootView).isVisible(WindowInsetsCompat.Type.ime()); WindowInsetsCompat insets = ViewCompat.getRootWindowInsets(rootView); + if (insets == null) return; + boolean showingKeyboard = insets.isVisible(WindowInsetsCompat.Type.ime()); int imeHeight = insets.getInsets(WindowInsetsCompat.Type.ime()).bottom; DisplayMetrics dm = activity.getResources().getDisplayMetrics(); final float density = dm.density;