在Android中使用底部导航的最佳实践:活动(activity) vs 片段(fragment)

5
我来自iOS系统,在进行iOS应用程序在安卓上的移植过程中,我发现iOS有Storyboard可以连接不同的视图(活动)并将它们嵌入底部导航栏和顶部导航栏。我目前遇到的问题是如何在安卓上实现底部导航栏。
比如说,我有3个底部导航项,具体如下:
1.tab1 - page1.1 - page1.2
2.tab2 - page2.1 - page2.2 - page2.3
3.tab3 - page3.1 - page3.2 - page3.3
例如,在tab1中,我有page1.1,然后假设我在page1.1中有一个按钮,点击后会跳转到page1.2。如果我从page1.2返回,则应该返回到page1.1。page2.1同样如此,我可以进入page2.2,然后从page2.2可以进入page2.3。我还想从page3.2跳转到page1.2。
我已经了解到使用fragment是最好的方法(每个page.x将成为不同的fragment,并且具有不同的布局),但它似乎并不容易。我也读到可以使用activities,但很多人建议不要使用。
请问您建议我重点关注什么?除了fragment和activities之外,还有其他解决方案需要考虑吗?谢谢。
1个回答

3
你应该在单个Activity中使用Fragments。如果不这样做,你将不得不在多个Activities中复制/包含一个底部导航栏。在某些情况下可能有用,但当Activity切换时,你的导航栏会重新绘制,这可能会导致不良用户体验。

我已经读过最好的方法是使用Fragment(每个page.x都要成为具有不同布局的不同fragment),但似乎不太容易。

使用Fragments实际上比使用Activities更容易。如果使用Fragments,可以让一个Activity控制正在显示的每个Fragment,这意味着可以根据显示的Fragment控制导航。这样,可以处理一些不符合通常导航行为的特殊场景。 如果使用Activities来完成相同的操作会更加困难,因为必须在Intent之间不断传递数据,并且由于逻辑分散在多个Activities中,所以很难控制行为。

你建议我专注于什么?除了Fragment和Activity之外还有其他解决方案吗?

这两个都是推荐的解决方案。如果你的某些UI元素在所有页面中都相同,而其中一部分会不断更改,则最好使用带有单个Activity的Fragments。对于完全不同或不属于你的导航流程的屏幕,应该添加更多的Activities而不是Fragments。 例如,可以在带有底部导航栏的一个Activity中使用Fragments,但对于设置屏幕或个人资料屏幕,则应创建单独的Activities。

你好,非常感谢!如果你需要做一个像Facebook一样的应用程序(多个选项卡,每个选项卡有多个导航页面),你更倾向于使用片段还是活动? - M4trix Dev
对于主要的仪表板,我会使用包含片段的一个Activity,对于设置、个人资料屏幕,我会使用Activities。 - Zohaib Amir
@mactrix Fragments 无法独立使用,必须添加到 Activity 中。请在此处阅读更多信息:https://developer.android.com/guide/components/fragments - Zohaib Amir
谢谢。是的,我明白了。必须有一个基础活动来支持片段。好的,那么我将使用1个活动和尽可能多的片段。这可能会有20个片段。您知道我是否会遇到在内存中保存所有这些片段的问题吗?我希望每个选项卡都能记住所有片段的内存,以便我可以在不同选项卡之间切换并查看最新的片段(我不想每次重新创建片段并重新加载数据)。 - M4trix Dev
@mactrix 一次只会加载和显示一个片段,所以没有问题。不要保留对每个片段的引用。 现在,你说有20个片段,如果它们的布局相同而内容不同,那么为什么不使用一个片段,并每次传递不同的数据呢? - Zohaib Amir
@mactrix 或者你可以将相同的片段视为具有不同数据的单个片段。 - Zohaib Amir

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接