From 4a67a3b73f7097c3bd0f659252fb9f64ad0df217 Mon Sep 17 00:00:00 2001 From: Martin Guillon Date: Thu, 19 Mar 2020 10:00:29 +0100 Subject: [PATCH] fix: dont create an actionbar if not necessary (#8402) * fix: dont create an actionbar if not necessary For now i kept the commented code so that you can see the change. Also i changed the android check to behave like iOS * rollback. we now try an make sure the actionbar is created only if needed * actually we should check for false --- nativescript-core/ui/page/page-common.ts | 2 +- nativescript-core/ui/page/page.android.ts | 19 ++++++++++++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/nativescript-core/ui/page/page-common.ts b/nativescript-core/ui/page/page-common.ts index 6d69e32d4..96418f5d0 100644 --- a/nativescript-core/ui/page/page-common.ts +++ b/nativescript-core/ui/page/page-common.ts @@ -138,7 +138,7 @@ export class PageBase extends ContentView implements PageDefinition { public eachChildView(callback: (child: View) => boolean) { super.eachChildView(callback); - if (this.actionBar) { + if (this.hasActionBar) { callback(this.actionBar); } } diff --git a/nativescript-core/ui/page/page.android.ts b/nativescript-core/ui/page/page.android.ts index 39c77f415..715af532f 100644 --- a/nativescript-core/ui/page/page.android.ts +++ b/nativescript-core/ui/page/page.android.ts @@ -45,17 +45,30 @@ export class Page extends PageBase { @profile public onLoaded() { super.onLoaded(); - if (this.actionBarHidden !== undefined) { + if (!this.hasActionBar && this.actionBarHidden !== true) { + // ensure actionBar is created + // but we only need to do that if the actionBarHidden is not hidden + this.actionBar = new ActionBar(); + } + if (this.hasActionBar) { this.updateActionBar(); } } private updateActionBar() { - this.actionBar.update(); + // the test is actually to ensure the actionBar is created + // it will be created if not + if (this.actionBar) { + this.actionBar.update(); + } } [actionBarHiddenProperty.setNative](value: boolean) { - this.updateActionBar(); + // in case the actionBar is not created and actionBarHidden is changed to true + // the actionBar will be created by updateActionBar + if (!value || this.hasActionBar) { + this.updateActionBar(); + } } [statusBarStyleProperty.getDefault](): { color: number, systemUiVisibility: number } {