Skip to content

Commit 2e91650

Browse files
authored
fix: correctly search for the tab fragment (#405)
1 parent fb2d519 commit 2e91650

File tree

1 file changed

+20
-10
lines changed

1 file changed

+20
-10
lines changed

src/core-tabs/tab-content-item/index.android.ts

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { GridLayout, View } from '@nativescript/core';
1+
import { GridLayout, View, Trace } from '@nativescript/core';
22
import { TabContentItem as TabContentItemDefinition } from '.';
33
import { TabContentItemBase } from './tab-content-item-common';
44

@@ -37,20 +37,30 @@ export class TabContentItem extends TabContentItemBase {
3737
(this as TabContentItemDefinition).canBeLoaded = false;
3838
}
3939

40-
_getChildFragmentManager() {
41-
const tabView = this.parent as View;
42-
let tabFragment = null;
43-
const fragmentManager = tabView._getFragmentManager();
40+
private _fragmentMatches(fragment: any) {
41+
// ensure index AND owner for when 2 tabviews are in the same page
42+
return fragment.index === this.index && fragment.owner === this.parent;
43+
}
44+
private _findFragment(fragmentManager: androidx.fragment.app.FragmentManager) {
45+
if (!fragmentManager) {
46+
return null;
47+
}
4448
const fragments = fragmentManager.getFragments().toArray();
4549
for (let i = 0; i < fragments.length; i++) {
46-
// ensure index AND owner for when 2 tabviews are in the same page
47-
if (fragments[i].index === this.index && fragments[i].owner === tabView) {
48-
tabFragment = fragments[i];
49-
break;
50+
if (fragments[i].index === this.index && fragments[i].owner === this.parent) {
51+
return fragments[i];
5052
}
5153
}
54+
return null;
55+
}
56+
57+
_getChildFragmentManager() {
58+
const tabView = this.parent as View;
59+
let tabFragment = null;
60+
tabFragment = this._findFragment(tabView._getRootFragmentManager()) || this._findFragment(tabView._getFragmentManager());
5261
if (!tabFragment) {
53-
return fragmentManager;
62+
Trace.write(`No fragment found for ${tabView} with index ${this.index}`, Trace.categories.Error, Trace.messageType.error);
63+
return tabView._getFragmentManager();
5464
}
5565
return tabFragment.getChildFragmentManager();
5666
}

0 commit comments

Comments
 (0)