diff options
author | E.Z. Hart <hartez@users.noreply.github.com> | 2016-10-04 11:47:02 -0600 |
---|---|---|
committer | Rui Marinho <me@ruimarinho.net> | 2016-10-04 18:47:02 +0100 |
commit | d178a458ee1cdae63e1ffaf6f5445000f7b9cd0e (patch) | |
tree | adee2c88cec80075e405220305de1a6618202c3a /Xamarin.Forms.Platform.Android/AppCompat/MasterDetailContainer.cs | |
parent | c83c19f106162ca55ab57dfea3693246ec6155fa (diff) | |
download | xamarin-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.cs | 34 |
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) |