diff --git a/apps/ui/src/modal-view/nested-modal-tab.xml b/apps/ui/src/modal-view/nested-modal-tab.xml
new file mode 100644
index 000000000..d01de1f9c
--- /dev/null
+++ b/apps/ui/src/modal-view/nested-modal-tab.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/ui/src/modal-view/nested-modal.ts b/apps/ui/src/modal-view/nested-modal.ts
index a40684b74..30722e8c5 100644
--- a/apps/ui/src/modal-view/nested-modal.ts
+++ b/apps/ui/src/modal-view/nested-modal.ts
@@ -9,6 +9,14 @@ export function onShowingModally(args: ShownModallyData) {
onTap: function () {
Dialogs.alert('it works!');
},
+ openNestedModal: function () {
+ page.showModal('modal-view/nested-nested-modal', {
+ context: 'Neste mODAL',
+ closeCallback: () => {
+ console.log('nested-modal.openNestedModal');
+ },
+ });
+ },
});
}
diff --git a/apps/ui/src/modal-view/nested-modal.xml b/apps/ui/src/modal-view/nested-modal.xml
index 7795a0afa..cb82585fd 100644
--- a/apps/ui/src/modal-view/nested-modal.xml
+++ b/apps/ui/src/modal-view/nested-modal.xml
@@ -5,5 +5,6 @@
+
diff --git a/apps/ui/src/modal-view/nested-nested-frame.ts b/apps/ui/src/modal-view/nested-nested-frame.ts
new file mode 100644
index 000000000..2c131ac56
--- /dev/null
+++ b/apps/ui/src/modal-view/nested-nested-frame.ts
@@ -0,0 +1,29 @@
+import { Page, EventData, fromObject, Dialogs } from '@nativescript/core';
+
+export function navigatingTo(args) {
+ const page = args.object;
+
+ page.bindingContext = fromObject({
+ context: args.context,
+ onTap: function () {
+ Dialogs.alert('it works!');
+ },
+ openNestedFrames: function () {
+ page.showModal('modal-view/nested-modal-tab', {
+ context: 'Nested Modal Tab',
+ fullscreen: true,
+ closeCallback: () => {
+ console.log('nested-modal.openNestedModal');
+ },
+ });
+ },
+ });
+}
+
+export function onLoaded(args: EventData) {
+ console.log('nested-nested-modal.onLoaded');
+}
+
+export function onUnloaded() {
+ console.log('nested-nested-modal.onUnloaded');
+}
diff --git a/apps/ui/src/modal-view/nested-nested-frame.xml b/apps/ui/src/modal-view/nested-nested-frame.xml
new file mode 100644
index 000000000..6cbdd140f
--- /dev/null
+++ b/apps/ui/src/modal-view/nested-nested-frame.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/apps/ui/src/modal-view/nested-nested-modal.xml b/apps/ui/src/modal-view/nested-nested-modal.xml
new file mode 100644
index 000000000..f664665fd
--- /dev/null
+++ b/apps/ui/src/modal-view/nested-nested-modal.xml
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/core/ui/core/view/index.android.ts b/packages/core/ui/core/view/index.android.ts
index 0d7150acc..29e623619 100644
--- a/packages/core/ui/core/view/index.android.ts
+++ b/packages/core/ui/core/view/index.android.ts
@@ -345,6 +345,9 @@ export class View extends ViewCommon {
}
public _getFragmentManager(): androidx.fragment.app.FragmentManager {
+ if ((global)._dialogFragment) {
+ return (global)._dialogFragment.getChildFragmentManager();
+ }
let manager = this._manager;
if (!manager) {
let view: View = this;
@@ -690,20 +693,19 @@ export class View extends ViewCommon {
};
saveModal(dialogOptions);
-
this._dialogFragment = df;
+ (global)._dialogFragment = df;
this._raiseShowingModallyEvent();
-
this._dialogFragment.show(parent._getRootFragmentManager(), this._domId.toString());
}
protected _hideNativeModalView(parent: View, whenClosedCallback: () => void) {
- const manager = this._dialogFragment.getFragmentManager();
+ const manager = this._dialogFragment.getParentFragmentManager();
if (manager) {
this._dialogFragment.dismissAllowingStateLoss();
}
-
this._dialogFragment = null;
+ (global)._dialogFragment = null;
whenClosedCallback();
}