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 dce0127a06503756dd9b5ef87d8f5b142afaf3e1..ca55aa92c8e14e225ef464dde49d8c7aaffbde58 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 4e40f108f16d4f66ac0b6e8bc529620cd13f0216..91f2887ad0cb963668a9cb569bc1678b3e3fa9c0 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 e4cb310e0b8426a530b678685365ae618eecc581..cbb2302fcc34426948a729b1331f0579c4c19aa5 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; }