【问题标题】:Best practise to use bottom navigation in android: activity vs fragment在android中使用底部导航的最佳实践:活动与片段
【发布时间】:2019-12-17 15:43:32
【问题描述】:

我来自 iOS,正在努力将 iOS 应用移植到 Android 上。在 iOS 中有故事板,您可以在其中连接不同的视图(活动)并将它们嵌入标签栏和导航栏。我很难理解在 android 中实现底部导航的最佳方法是什么...

假设我有以下 3 个底部导航项

  1. 标签1

    • 第1.1页
      • 第1.2页
  2. tab2

    • 第2.1页
      • 第2.2页
        • 第2.3页
  3. tab3

    • page3.1
      • 第3.2页
        • 第3.3页

作为 tab1 中的示例,我有 page1.1。然后假设我在 page1.1 中有一个按钮,它将我带到 page1.2。如果我从 page1.2 返回,我想返回 page1.1。 page2.1 的情况相同,我可以转到第 2.2 页,从第 2.2 页我可以转到第 2.3 页。我也想从page3.2转到page 1.2

我读过片段是最好的方法(每个 page.x 都将成为具有不同布局的不同片段),但这似乎并不容易。我也读过我可以使用活动,但很多人建议不要使用它

您建议我关注什么?除了片段和活动之外,还有其他解决方案需要考虑吗?谢谢

【问题讨论】:

    标签: android android-fragments android-activity fragment bottomnavigationview


    【解决方案1】:

    您应该将片段与单个 Activity 一起使用。如果不这样做,您将不得不在多个活动中复制/包含一个底栏。在某些情况下它可能很有用,但是当切换 Activity 时,您的栏将重新绘制,这可能会导致糟糕的用户体验。

    我读过片段是最好的方法(每个page.x都会变成不同布局的不同片段)但是看起来并不容易

    使用片段实际上可能比使用活动更容易。如果您使用 Fragments,您可以让一个 Activity 控制正在显示的每个 Fragment,这意味着您可以根据正在显示的 Fragment 控制导航。这样,您可以处理一些不属于通常导航行为的特殊场景。 在活动中做同样的事情会有点困难,因为你必须不断地在 Intents 中传递数据,而且很难控制行为,因为你的逻辑将分布在活动中。

    你建议我关注什么?除了片段和活动之外,还有其他解决方案需要考虑吗?

    这两个只是推荐的解决方案。如果您的某些 UI 元素在所有页面中都相同,而某些部分不断更改,那么最好使用带有单个 Activity 的 Fragments。对于完全不同的屏幕或不属于您的导航流程的屏幕,您可以为它们添加更多活动而不是片段。
    例如,您可以在一个带有底部导航栏的 Activity 中使用 Fragments,但对于设置屏幕或配置文件屏幕,您应该制作单独的 Activity。

    【讨论】:

    • 您好,非常感谢!如果你需要做一个像 Facebook 这样的应用程序(多个标签,每个标签有多个导航页面),你更愿意使用片段还是活动?
    • @mactrix 对于主仪表板,我会使用一个包含片段的活动,对于设置,我会使用活动的配置文件屏幕。
    • @mactrix Fragments 不能独立使用,必须添加到 Activity 中。在此处阅读更多信息developer.android.com/guide/components/fragments
    • 谢谢。是的我明白。必须有一个基础活动来支持 Fragments。好的,所以我将进行 1 项活动和尽可能多的片段。这可能是 20 个片段。你知道我将所有这些片段保存在内存中是否会有问题。我基本上希望每个选项卡都会保留所有片段的内存,以便我可以切换到另一个选项卡并查看最新片段(我不想每次都重新创建片段并重新加载数据)
    • @mactrix 一次只会加载一个片段并且可见,因此没有问题。不要保留对每个片段的引用。现在,您说有 20 个片段,如果它们的布局相同且内容不同,那么为什么不使用 1 个片段并每次传递不同的数据呢?
    猜你喜欢
    • 2021-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多