summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Platform.Android/AppCompat/MasterDetailContainer.cs
diff options
context:
space:
mode:
authorE.Z. Hart <hartez@users.noreply.github.com>2016-10-04 11:47:02 -0600
committerRui Marinho <me@ruimarinho.net>2016-10-04 18:47:02 +0100
commitd178a458ee1cdae63e1ffaf6f5445000f7b9cd0e (patch)
treeadee2c88cec80075e405220305de1a6618202c3a /Xamarin.Forms.Platform.Android/AppCompat/MasterDetailContainer.cs
parentc83c19f106162ca55ab57dfea3693246ec6155fa (diff)
downloadxamarin-forms-d178a458ee1cdae63e1ffaf6f5445000f7b9cd0e.tar.gz
xamarin-forms-d178a458ee1cdae63e1ffaf6f5445000f7b9cd0e.tar.bz2
xamarin-forms-d178a458ee1cdae63e1ffaf6f5445000f7b9cd0e.zip
Unhook drawer listeners so MDP renderer and pages can be collected (#412)
Null out page in custom MDP renderer in Control Gallery so it can be collected Checkpoint Checkpoint Checkpoint Checkpoint Checkpoint Checkpoint
Diffstat (limited to 'Xamarin.Forms.Platform.Android/AppCompat/MasterDetailContainer.cs')
-rw-r--r--Xamarin.Forms.Platform.Android/AppCompat/MasterDetailContainer.cs34
1 files changed, 33 insertions, 1 deletions
diff --git a/Xamarin.Forms.Platform.Android/AppCompat/MasterDetailContainer.cs b/Xamarin.Forms.Platform.Android/AppCompat/MasterDetailContainer.cs
index 102bac53..1b85b42f 100644
--- a/Xamarin.Forms.Platform.Android/AppCompat/MasterDetailContainer.cs
+++ b/Xamarin.Forms.Platform.Android/AppCompat/MasterDetailContainer.cs
@@ -11,8 +11,9 @@ namespace Xamarin.Forms.Platform.Android.AppCompat
PageContainer _pageContainer;
FragmentManager _fragmentManager;
readonly bool _isMaster;
- readonly MasterDetailPage _parent;
+ MasterDetailPage _parent;
Fragment _currentFragment;
+ bool _disposed;
public MasterDetailContainer(MasterDetailPage parent, bool isMaster, Context context) : base(parent, isMaster, context)
{
@@ -106,6 +107,37 @@ namespace Xamarin.Forms.Platform.Android.AppCompat
}
}
+ protected override void Dispose(bool disposing)
+ {
+ if (_disposed)
+ {
+ return;
+ }
+
+ _disposed = true;
+
+ if (disposing)
+ {
+ if (_currentFragment != null)
+ {
+ FragmentTransaction transaction = FragmentManager.BeginTransaction();
+ transaction.DisallowAddToBackStack();
+ transaction.Remove(_currentFragment);
+ transaction.SetTransition((int)FragmentTransit.None);
+ transaction.CommitAllowingStateLoss();
+ FragmentManager.ExecutePendingTransactions();
+
+ _currentFragment = null;
+ }
+
+ _parent = null;
+ _pageContainer = null;
+ _fragmentManager = null;
+ }
+
+ base.Dispose(disposing);
+ }
+
public void SetFragmentManager(FragmentManager fragmentManager)
{
if (_fragmentManager == null)