android - MainActivity 作为导航图中的主页目的地
问题描述
我有一个简单的应用程序,由一个 MainActivity 和两个片段 FragmentA 和 FragmentB 组成。我想使用 NavigationGraph 以便用户仍然登陆 MainActivity 但随后可以使用两个按钮导航到 FragmentA 或 FragmentB。有没有办法做到这一点?根据DAC上的东西,看起来我必须使用三个片段加上 MainActivity。但我想知道我是否可以只使用我现有的 1 个活动和 2 个片段的方案。
添加细节以避免混淆?
MainActivity 有两个按钮:用户单击“Do A”转到 FragmentA,单击“Do B”转到 FragmentB。
但是,要使用导航图,我似乎必须再添加一个片段——MainFragment。我的问题是:有没有办法避免添加额外的片段并仍然使用导航图。
解决方案
Android 应用程序需要至少一个 Activity 来显示 UI。片段就像 android 应用程序中的按钮。如果不将其附加到活动,则无法显示它。在 android 导航教程中,有一个活动。该活动仅包含标签,因此它实际上是空的。在片段标签中,您显示一个片段,该教程向您展示如何在标签内切换片段。因此,即使您的应用显示不同的 UI(在片段之间切换),您也始终处于 MainActivity 中。
就像上面的 ianhanniballake 评论一样。你的活动显示了什么?你希望它展示什么?你总是看到它。
编辑:导航图仅适用于片段。如果您想在活动之间导航,请使用此代码:
Intent switchActivityIntent = new Intent(this, TargetActivity.class);
startActivity(switchActivityIntent);
您可以像往常一样使用导航图,当您需要打开活动时,只需使用该代码。它工作得很好..但是当你使用导航图时,为什么你需要使用多个活动?使用导航图时,您应该只有一项活动。这就是为什么谷歌制作那个东西(导航图)来支持单活动架构。
推荐阅读
- reporting-services - 为什么未选择所有参数时 SSRS 公式会引发错误?
- java - Spring Websocket ChannelInterceptor 未触发 CONNECT 事件
- python - 如何在子类中覆盖基类的静态抽象方法?
- python - 如何在 Flask 的 if 条件下调用 render_template?
- css - Vue cli 在 css 中构建生产更改不透明度
- pandas - All() 正在打印每次 else 语句
- javascript - 为什么在我单击右侧“箭头”后我的页面不再显示我的“.wall”(.wall 是额外信息)[netflix 滑块]
- javascript - React 的 Text-Mask 库可以与 Redux 一起使用吗?
- java - 使用流将 Java 列表转换为映射,其中映射中的每个值共享相同的属性
- path - 如何让我的寻路算法突出显示最短路径?