From e0fad4133b6b89cea7c83aad494cad3971f42fb2 Mon Sep 17 00:00:00 2001 From: Alexander Djenkov Date: Thu, 4 Jul 2019 10:02:17 +0300 Subject: [PATCH] fix(bottom-navigation): current TabContentItem index not set (#7453) --- .../bottom-navigation.android.ts | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/tns-core-modules/ui/bottom-navigation/bottom-navigation.android.ts b/tns-core-modules/ui/bottom-navigation/bottom-navigation.android.ts index 11d7d7ce6..26e4e7f53 100644 --- a/tns-core-modules/ui/bottom-navigation/bottom-navigation.android.ts +++ b/tns-core-modules/ui/bottom-navigation/bottom-navigation.android.ts @@ -99,7 +99,7 @@ function initializeNativeClasses() { BottomNavigationBar = BottomNavigationBarImplementation; } -function createTabItemSpec(item: TabContentItem, tabStripItem: TabStripItem): org.nativescript.widgets.TabItemSpec { +function createTabItemSpec(tabStripItem: TabStripItem): org.nativescript.widgets.TabItemSpec { const result = new org.nativescript.widgets.TabItemSpec(); result.title = tabStripItem.title; @@ -202,7 +202,7 @@ export class BottomNavigation extends TabNavigationBase { (nativeView).bottomNavigationBar = bottomNavigationBar; setElevation(nativeView, bottomNavigationBar); - + const primaryColor = ad.resources.getPaletteColor(PRIMARY_COLOR, context); if (primaryColor) { bottomNavigationBar.setBackgroundColor(primaryColor); @@ -265,13 +265,13 @@ export class BottomNavigation extends TabNavigationBase { public onLoaded(): void { super.onLoaded(); - this.setAdapterItems(this.items); + this.setTabStripItems(); } public onUnloaded(): void { super.onUnloaded(); - this.setAdapterItems(null); + this.setTabStripItems(); } public disposeNativeView() { @@ -341,12 +341,12 @@ export class BottomNavigation extends TabNavigationBase { transaction.commitNowAllowingStateLoss(); } - private setAdapterItems(items: Array) { + private setTabStripItems() { if (this.tabStrip && this.tabStrip.items) { const tabItems = new Array(); this.tabStrip.items.forEach((item, i, arr) => { if (this.tabStrip.items[i]) { - const tabItemSpec = createTabItemSpec(null, this.tabStrip.items[i]); + const tabItemSpec = createTabItemSpec(this.tabStrip.items[i]); tabItems.push(tabItemSpec); } }); @@ -357,6 +357,8 @@ export class BottomNavigation extends TabNavigationBase { const tv = this._bottomNavigationBar.getTextViewForItemAt(i); item.setNativeView(tv); }); + } else { + this._bottomNavigationBar.setItems(null); } } @@ -390,6 +392,12 @@ export class BottomNavigation extends TabNavigationBase { return null; } [itemsProperty.setNative](value: TabContentItem[]) { + if (value) { + value.forEach((item: TabContentItem, i) => { + (item).index = i; + }); + } + selectedIndexProperty.coerce(this); } @@ -397,7 +405,7 @@ export class BottomNavigation extends TabNavigationBase { return null; } [tabStripProperty.setNative](value: TabStrip) { - this.setAdapterItems([]); + this.setTabStripItems(); } }