Clean up keyboard fragment when view is detached from window.

This commit is contained in:
Alex Hart
2022-11-28 13:01:58 -04:00
parent 683247bf98
commit 42d2d415d6

View File

@@ -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;