【问题标题】:Question about BottomNavigationView in Android关于Android中BottomNavigationView的问题
【发布时间】:2020-08-11 04:21:57
【问题描述】:

我有关于 BottomNavigationView 的一般性问题。我想在应用程序中的每个活动中都有一个 BottomNavigationView 用于订购某些东西(例如食物)。它应该有 4 个按钮:

  • 返回
  • 信息
  • 统计数据
  • 我的订单

使用“返回”,应用应该只是返回到上一个活动。按钮“统计”和“我的订单”应切换到不显示时不应被破坏的持久活动。 “我的订单”应显示最后的订单。按钮“信息”应该只显示有关当前项目或当前菜单的一些信息(取决于调用它的活动)。所以基本上我有两个问题:

  1. “信息”、“统计”和“我的订单”活动应该是真实的活动还是只是片段?通常我认为至少“统计”和“我的订单”应该是真实的活动,因为它们是持久的。但是在很多 BottomNavigationView 中只使用了 Fragments?
  2. 如何将内容信息传递给 Activity/Fragment 'Info'。这个 Activity/Fragment 应该显示基于 Activity 被调用的信息。假设活动是不同的菜肴。我必须为每道菜创建一个单独的信息活动/片段吗?或者我可以以某种方式定义一个基于当前 Activity 显示信息的动态 Activity/Fragment?

感谢您的每一条评论,非常感谢您的帮助。

【问题讨论】:

    标签: java android android-fragments bottomnavigationview


    【解决方案1】:
    1. 推荐的方法是Single ActivityMultiple fragments。 您可以使用Jetpack's Navigation Component 执行此操作
    2. 如果你需要通过data from an Activity/Fragment to the new calling Fragment,可以通过setting arguments on the calling fragment然后getting it on the called fragment来完成。如果有something which requires to be dynamic, for example- dishes fragmentmake a single fragment and common layout and load the data dynamically from the backend

    对于设置参数,这应该会有所帮助

    How to pass a variable from Activity to Fragment, and pass it back?

    注意:你可以不使用Navigation Components使用fragment,但是你必须使用FragmentManager and FragmentTransaction and also have to maintain the Backstack by yourself which could be quite complicated

    【讨论】:

    • 1)You should watch this video m.youtube.com/watch?reload=9&v=2k8x8V77CrU to understand better about Single Activity and Navigation Components 和 2)关于backend thing,最终您将使用与服务器通信并从服务器、数据库/文件获取数据的应用程序,来自您的手机或云端。没有什么是静态的,数据必须从网络或数据库或文件中加载。这就是为什么,为了显示相同类型的数据,例如餐厅的菜单,您应该制作一个片段,该片段具有所有菜单的通用 UI,并相应地显示数据
    • 1) 感谢 Dev 的回答和帮助。我稍后会看视频。希望它可以帮助我回答是否将片段或活动用于持久活动。 2)好的,所以你会建议我使用具有动态内容(而不是活动)的片段。所以我只需要定义一次片段,对吧(作为一个XML布局文件和一个Java类文件)?
    • 感谢开发者的回答和帮助。 1)为什么你会在你的例子中为餐厅和菜肴使用片段而不是活动?对于菜肴,我已经创建了一个活动。与活动相比,片段有什么优势。我认为片段是一种可以为您提供额外信息的窗口。对于持久类的真正功能,我认为活动更好。 2)在我的情况下,内容或数据不会来自服务器。它将嵌入应用程序本身(我根本不使用服务器)。
    • 是的,我会使用单个活动和多个片段。在使用Navigation Components 的情况下,我的主要活动XML 文件将具有NavHost Fragment 作为其他片段的Container。并且所有其他单独的 Fragment 的 XML 文件将保存我希望用户在我的应用程序中显示的各个屏幕的 UI。我会在这些不同的片段之间导航。所有 XML 文件都有与之关联的类文件。 XML 包含 UI 部分,相应的类添加了功能。您的 XML 文件和类共同构成 UI 和功能。
    • 视情况而定。各种布局用于各种用例。有时开发人员可能希望在他们的活动中包含BottomNavigationViewDrawerLayout 以及NavHostFragment。这完全取决于开发人员想要在活动 XML 文件中包含的内容。但有一点可以确定,如果您使用的是Navigation Components,那么您的活动文件必须有NavHost Fragment建议大家先下载Codelab等项目,看看他们的代码先了解一下。你看别人的代码越多,你学习和改进的就越多。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多