具有持久化BottomNavigationView的片段或活动

3
目前我正在实现BottomNavigationView,该导航栏有4个菜单项。我已经通过将xml代码添加到不同的活动中为这4个菜单项进行了设置。这4个活动都有相同的BottomNavigationView。但是,每次我按下bottomNavigationView上的不同按钮时,BottomNavigationView都会刷新并改变活动。所以,我应该使用具有BottomNavigationView的Fragment还是Activity呢?我拥有的这4个活动彼此之间没有关联。
我正在使用BottomNavigationViewEx库,但这不应该造成任何影响。以下是这4个活动中共有的XML代码:
<com.ittianyu.bottomnavigationviewex.BottomNavigationViewEx
        android:id="@+id/bottom_navigation_view"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:background="?android:attr/windowBackground"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:menu="@menu/navigation" />

1
如果底部菜单在这4个屏幕中都是相同的,那么使用Fragment而不是Activity会更灵活、更易于维护。 - Sahil Manchanda
@SahilManchanda 当我点击菜单项时,碎片是否会堆叠在彼此上方,还是在切换时将被销毁? - Paradox
这取决于你的实现方式...如果你使用ViewPager并将离屏页面限制设置为4,则不会销毁任何片段;或者,如果你手动处理Fragment Transaction,你可以堆叠。总之,这取决于你的实现方式。 - Sahil Manchanda
@SahilManchanda 谢谢,那回答了我的问题,如果您想发布一个答案。 - Paradox
好的.. :) 给我一分钟.. - Sahil Manchanda
2个回答

3
如果底部菜单对于4个屏幕是相同的,那么使用Fragments而不是Activities会更灵活,更容易维护。您可以使用ViewPager来处理Fragments或FragmentTransaction与FrameLayout一起显示您的Fragments。

1
我自己做了很多关于这个问题的研究,因为通常我会在一个活动中使用片段,但是由于片段的生命周期比活动更复杂,所以与片段一起工作可能非常棘手。因此,通常需要处理许多源于片段复杂生命周期的问题。
因此,我在想,如果您可以将每个片段变成自己的活动,并使用底部导航来保持底部导航的位置,通过使用活动转换并使底部导航成为活动之间的共享元素,这样页面上的其他所有内容都可以进行任何自定义动画。以下是一些文档和示例存储库的链接,可用于演示此功能。

https://android.jlelse.eu/android-material-design-activity-transition-55de706ab967 https://developer.android.com/training/material/animations.html https://github.com/ddekanski/BottomNavigationViewBetweenActivities

现在有一件我不确定是否对您有影响的事情,那就是您是否希望用户能够在应用程序中滑动页面。如果您答复“是”,那么我建议暂时继续使用片段并使用ViewPager来实现。虽然只使用活动也可能实现滑动,但我还没有探索如何做到这一点,尽管此链接可能是一个好的起点。

https://www.bignerdranch.com/blog/viewpager-without-fragments/

如果您选择使用片段,这也是一个很棒的教程,涵盖了有关底部导航的所有信息。

https://android.jlelse.eu/ultimate-guide-to-bottom-navigation-on-android-75e4efb8105f


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