在使用 Delphi 构建的 Firemonkey Android 应用程序中切换屏幕的正确方法是什么?

What is the proper way of switching between screens in Firemonkey Android app built with Delphi?

我正在使用 Firemonkey 在 Delphi 10.3 中构建 Android 应用程序,我需要该应用程序具有 2 个不同的屏幕 - 登录和主屏幕。我如何将它们正确地组织到 Forms、Frames 或其他方式中?这样登录屏幕就被主应用屏幕所取代。

到目前为止,我已经创建了两个表单并尝试通过以下方式切换它们:

Form1.Hide;
Form2.Show;

但这根本不起作用,应用程序自行关闭。

作为解决方法,我尝试将 Form2 嵌入到 Form1 中。这行得通,但我怀疑这不是正确的方法:

Form1.GroupBox1.Visible := False; // all elements reside on GroupBox1
Form2.Parent := Form1;
Form2.Show;

因此问题 - 如何在 Delphi Firemonkey Android 应用程序中正确设置和切换屏幕?

P.S。我是 Android 开发的新手,正在寻找解决此案例的 Delphi 方法。

类似问题:

Show login form before main form(暗示应该使用表格,缺少实际代码)

以下代码(运行 成功登录)从逻辑的角度看是正确的,似乎也运行良好:

// Create only Form1 on app creation
// Create Form2 on successfull login

Application.CreateForm(TForm2, Form2);
Form2.Show;
Application.MainForm := Form2;
Form1.Close;
Form1.Free;
Form1 := nil;

如果有 better/proper 方法可以做到这一点,我也很想看到它们。

我使用带有 TTabControl 的单一表单(不显示选项卡),创建以 TTabControl 中的选项卡为父级的框架,并在选项卡之间切换以显示不同的框架。

这样做的一个优点是能够进行过渡,但是有一个缺点可能会让某些人反感:无法在帧上编辑自定义样式。