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 } {