From b20ec8696945cae327c36103ef8f7309518cdadc Mon Sep 17 00:00:00 2001 From: vakrilov Date: Fri, 6 Dec 2019 16:13:52 +0200 Subject: [PATCH] refactor: use fragment.getFragmentManager --- nativescript-core/ui/frame/frame.android.ts | 31 ++------------------- 1 file changed, 3 insertions(+), 28 deletions(-) diff --git a/nativescript-core/ui/frame/frame.android.ts b/nativescript-core/ui/frame/frame.android.ts index 8070dab47..8bc4d5e25 100644 --- a/nativescript-core/ui/frame/frame.android.ts +++ b/nativescript-core/ui/frame/frame.android.ts @@ -87,16 +87,6 @@ function getAttachListener(): android.view.View.OnAttachStateChangeListener { return attachStateChangeListener; } -function nativeArrayIncludes(arr: native.Array, what: T): boolean { - for (let i = 0; i < arr.length; i++) { - if (arr[i] === what) { - return true; - } - } - - return false; -} - export class Frame extends FrameBase { public _originalBackground: any; private _android: AndroidFrame; @@ -274,24 +264,9 @@ export class Frame extends FrameBase { !this._currentEntry.fragment.isAdded()) { return; } - const fragmentManager: androidx.fragment.app.FragmentManager = this._getFragmentManager(); + const fragment: androidx.fragment.app.Fragment = this._currentEntry.fragment; + const fragmentManager: androidx.fragment.app.FragmentManager = fragment.getFragmentManager(); - // Check if manager contains the fragment to be removed - // This might happen when a dialog is already closed with android back btn - const fragment = this._currentEntry.fragment; - const fragmentFound = nativeArrayIncludes(fragmentManager.getFragments().toArray(), fragment); - - if (traceEnabled()) { - const message = fragmentFound ? - `Frame.disposeCurrentFragment - fragment(${fragment}) found in fragmentManager(${fragmentManager}). Removing ...` : - `Frame.disposeCurrentFragment - fragment(${fragment}) NOT found in fragmentManager(${fragmentManager}). Skipping remove`; - traceWrite(message, traceCategories.NativeLifecycle); - } - - if (!fragmentFound) { - return; - } - const transaction = fragmentManager.beginTransaction(); const fragmentExitTransition = fragment.getExitTransition(); @@ -662,7 +637,7 @@ function clearEntry(entry: BackstackEntry): void { entry.recreated = false; entry.fragment = null; const page = entry.resolvedPage; - if (page._context) { + if (page && page._context) { entry.resolvedPage._tearDownUI(true); } }