【问题标题】:Android design principles and the use of activities/fragmentsAndroid设计原则和activity/fragments的使用
【发布时间】:2015-07-13 08:08:47
【问题描述】:

我是 android 应用程序开发的新手(但有一些 Java 经验),我在如何设计我的应用程序方面有点挣扎。例如:

当我执行应用程序时,我有一个带有徽标和两个按钮的起始页:RegisterLogIn。这应该是第一个活动。

1.) 如果我按下 register 按钮,我会看到一个页面(另一个活动),其中包含输入字段、一个注册按钮以及一个 Facebook 和一个 Google+ 按钮。

2.) 如果我按下 login 按钮,我会看到一个页面(另一个活动),其中包含输入字段、登录按钮以及 Facebook 和 Google+ 按钮。

我没有实现两次 facebook 和 google+ 按钮,而是考虑将 google+ 按钮及其功能放入一个单独的片段中,对于 facebook 按钮也是如此,这样我就可以重复使用它们。

这是对活动和片段的“良好”解释吗?如果不是,我应该什么时候使用片段和活动?我想到了可以在不同活动中实现的可重用容器之类的片段。

感谢您的建议!

【问题讨论】:

  • 我认为您的意思是“片段”而不是片段?这个问题和答案是最新的,我特别关注的问题底部的链接可能值得一看 - 没有明确的答案,但讨论可能会帮助您决定什么适合您:stackoverflow.com/q/20306091/334402
  • 是的,对不起,我的意思是碎片。我已经阅读了问题的答案,并且我认为它是某种可重复使用的容器?因此,在我的示例中,将按钮及其功能(例如 facebook 登录或 google+ 登录)放入片段是否有意义,还是应该将所有内容放入一个活动中?

标签: java android android-fragments android-activity design-principles


【解决方案1】:

活动、片段和视图具有非常相似的目的,但在不同的层次上。只要对您有用,您就可以随意混合它们。我个人不喜欢片段,所以我只在我的应用程序中使用活动和视图。以下是主要区别:

  • 活动是入口点。您可以使用 Intent 启动您的应用程序以执行其中一项活动。你不能用其他元素做到这一点。当你计划一个入口点时,你应该使用一个活动。例如,其他应用可以访问的电子邮件撰写模块。
  • 视图非常简洁。使用它们来准备可重用的组件、布局和小部件。其他应用只能以库形式访问视图。
  • 片段介于两者之间。它们由可视部分、数据和应用程序逻辑组成。片段可以与 backstack manager 等活动一起使用,不能使用意图启动,可以使用布局和小部件(如视图)。使用 Fragment 创建带有 backstack 的更大屏幕。

和相似之处:

  • 所有三个提到的元素可以同时显示多个。 Activity 使用 ActivityGroup,片段使用布局和 FragmentManager,视图使用布局。
  • 这三个都有自己的生命周期。片段有最复杂的生命周期,视图——最简单的。
  • 这三个都可用于编写应用程序。您可以使用活动、片段和视图以非常相似的方式在屏幕上放置布局和小部件。

基本上,活动由一个窗口和一个布局(以及一些数据和逻辑)组成。片段由布局(以及一些数据和逻辑)组成。 View 是一个布局或一个小部件(以及一些数据和逻辑)。

回答您的问题 - 这意味着您的方法很好。至少对我来说。如果您打算仅将这些按钮用作 UI 组件,则可以将它们重写为视图。

【讨论】:

  • 感谢您提供非常有用的答案。我想我一直在努力将按钮放入片段中,因为片段实际上具有比我需要的更多的功能(例如,正如您提到的,您可以使用 backstack manager 之类的活动)。也许这对于“简单”的登录按钮来说已经很重了。但是,虽然这些登录按钮正在为更多功能实现 facebook 或 google+ API,但我不确定是否可以在视图中使用它们。你真的知道这是否可能还是我应该保持原样?
  • 我不知道你的编码风格或你的应用程序,所以我很难给你确切的答案。 GLSurfaceView 可能是最复杂的一个,它做了很多,所以我敢打赌,在你的情况下它也是可能的,问题是什么更方便。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多