From e4b169e20e513ab1c8210630c7feda874322510c Mon Sep 17 00:00:00 2001 From: Ergyun Syuleyman Date: Wed, 24 Jun 2020 11:51:03 +0300 Subject: [PATCH] [NY-10772]: [AN]: Samsung App crash: CallTapToSpeakFragment_ViewBinding.java line 58 com.nynja.mobile.communicator.ui.fragments.conference.CallTapToSpeakFragment_ViewBinding.unbind --- .../navigation/NynjaViewPagerAdapter.java | 14 ++++++++------ .../conference/ActiveCallPagerAdapter.java | 10 +++------- .../mobile/communicator/ui/base/BaseFragment.java | 1 + 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/com/nynja/mobile/communicator/navigation/NynjaViewPagerAdapter.java b/app/src/main/java/com/nynja/mobile/communicator/navigation/NynjaViewPagerAdapter.java index dce0127a06..ca55aa92c8 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/navigation/NynjaViewPagerAdapter.java +++ b/app/src/main/java/com/nynja/mobile/communicator/navigation/NynjaViewPagerAdapter.java @@ -58,13 +58,15 @@ public abstract class NynjaViewPagerAdapter extends PagerAdapter { @Override public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) { if (object instanceof BaseFragment) { - BaseFragment item = (BaseFragment) object; - ViewGroup parent = (ViewGroup)item.getFragmentView().getParent(); - if (parent != null) { - item.onRemoveFromParent(); - parent.removeView(item.getFragmentView()); + synchronized (this) { + BaseFragment item = (BaseFragment) object; + ViewGroup parent = (ViewGroup) item.getFragmentView().getParent(); + if (parent != null) { + item.onRemoveFromParent(); + parent.removeView(item.getFragmentView()); + } + destroyView(item); } - destroyView(item); } } } diff --git a/app/src/main/java/com/nynja/mobile/communicator/ui/adapters/conference/ActiveCallPagerAdapter.java b/app/src/main/java/com/nynja/mobile/communicator/ui/adapters/conference/ActiveCallPagerAdapter.java index 4e40f108f1..91f2887ad0 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/ui/adapters/conference/ActiveCallPagerAdapter.java +++ b/app/src/main/java/com/nynja/mobile/communicator/ui/adapters/conference/ActiveCallPagerAdapter.java @@ -57,10 +57,8 @@ public class ActiveCallPagerAdapter extends NynjaViewPagerAdapter { for (CallPages callPage : CallPages.values()) { final String itemId = makeFragmentId(getItemId(callPage.ordinal())); BaseFragment fragment = mAdapterPages.get(itemId); - if (fragment != null) { - destroyView(fragment); - } mAdapterPages.remove(itemId); + super.destroyItem(null, -1, fragment); } this.callActivity = null; callPages.clear(); @@ -74,10 +72,8 @@ public class ActiveCallPagerAdapter extends NynjaViewPagerAdapter { if (callPage == CallPages.ShareScreenFragment && !isScreenShareActive) { final String itemId = makeFragmentId(getItemId(callPage.ordinal())); BaseFragment fragment = mAdapterPages.get(itemId); - if (fragment != null) { - destroyView(fragment); - } mAdapterPages.remove(itemId); + super.destroyItem(null, -1, fragment); } // if (callPage == CallPages.ConferenceVideoFragment && !isConferenceVideoActive) { // final String itemId = makeFragmentId(getItemId(callPage.ordinal())); @@ -201,8 +197,8 @@ public class ActiveCallPagerAdapter extends NynjaViewPagerAdapter { Timber.v("Detaching item #" + itemId + ": f=" + object + " v=" + ((BaseFragment) object).getFragmentView()); BaseFragment fragment = mAdapterPages.get(itemId); - super.destroyItem(container, position, object); mAdapterPages.remove(itemId); + super.destroyItem(container, position, object); fragment = null; } diff --git a/app/src/main/java/com/nynja/mobile/communicator/ui/base/BaseFragment.java b/app/src/main/java/com/nynja/mobile/communicator/ui/base/BaseFragment.java index e4cb310e0b..cbb2302fcc 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/ui/base/BaseFragment.java +++ b/app/src/main/java/com/nynja/mobile/communicator/ui/base/BaseFragment.java @@ -143,6 +143,7 @@ public abstract class BaseFragment super.onDestroyView(); if (mUnBinder != null) { mUnBinder.unbind(); + mUnBinder = null; } mFocusedViewId = -1; } -- GitLab