From 42d2d415d6921be6909dcfe16fbdbf0c0df5fb27 Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Mon, 28 Nov 2022 13:01:58 -0400 Subject: [PATCH] Clean up keyboard fragment when view is detached from window. --- .../components/emoji/MediaKeyboard.java | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/MediaKeyboard.java b/app/src/main/java/org/thoughtcrime/securesms/components/emoji/MediaKeyboard.java index 3babe8658..49f4b2f70 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/MediaKeyboard.java +++ b/app/src/main/java/org/thoughtcrime/securesms/components/emoji/MediaKeyboard.java @@ -50,6 +50,26 @@ public class MediaKeyboard extends FrameLayout implements InputView { } } + @Override + protected void onAttachedToWindow() { + super.onAttachedToWindow(); + if (isInitialised && fragmentManager != null && keyboardPagerFragment != null) { + fragmentManager.beginTransaction() + .replace(R.id.media_keyboard_fragment_container, keyboardPagerFragment, TAG) + .commitNowAllowingStateLoss(); + } + } + + @Override + protected void onDetachedFromWindow() { + super.onDetachedFromWindow(); + if (fragmentManager != null && keyboardPagerFragment != null) { + fragmentManager.beginTransaction() + .remove(keyboardPagerFragment) + .commitNowAllowingStateLoss(); + } + } + public void setFragmentManager(@NonNull FragmentManager fragmentManager) { this.fragmentManager = fragmentManager; } @@ -152,6 +172,7 @@ public class MediaKeyboard extends FrameLayout implements InputView { private void initView() { if (!isInitialised) { + Log.d(TAG, "Initialising..."); LayoutInflater.from(getContext()).inflate(R.layout.media_keyboard, this, true); @@ -166,7 +187,7 @@ public class MediaKeyboard extends FrameLayout implements InputView { } fragmentManager.beginTransaction() - .replace(R.id.media_keyboard_fragment_container, keyboardPagerFragment) + .replace(R.id.media_keyboard_fragment_container, keyboardPagerFragment, TAG) .commitNowAllowingStateLoss(); keyboardState = State.NORMAL;