【问题标题】:Best Practice activity- switching and view- changing in android最佳实践活动 - 切换和视图 - 在 android 中更改
【发布时间】:2011-07-20 15:16:26
【问题描述】:

我仍在寻找如何使用带有菜单和工具栏的布局以及在 android 中膨胀或启动活动的最佳解决方案。我的问题可能听起来令人困惑,但我试图用一个例子来解释它。

假设我正在编写一个 android 应用程序(惊喜.. 我真的这样做了)

我的应用可以执行以下操作:

  1. 用户可以登录[3]或注册[2]。如果他登录,一个新的活动开始,他的仪表板将显示。如果他注册:注册过程的活动开始。
  2. 注册过程:用户输入他想要的用户名和密码并按下按钮接受。他的数据将被验证,如果有效,一个新的活动开始,他可以选择他的设置。后退按钮有效,数据可以传递给新活动。最后一次注册后,将保存窗口数据并启动仪表板。开始新的活动很有趣!
  3. 现在事情变得复杂了。 Dasboard 有一个“操作栏”(顶部)和一个“工具栏”(底部,如选项卡)。所以一切都应该在视口的中间部分查看(现在称为主视图)。没有更多的活动切换:(,寿。 目前,每个 tabclick 都会从主视图中删除所有视图并添加其新视图。看起来很棒,可以动画并且像魅力一样工作。除了:它目前不是动态的。

所以...我不知道如何以最好的方式解决它。例如:我从 web 服务获取数据,从中创建一个列表视图,它正在扩展列表活动。我无法启动此活动,但需要将这些数据放入主视图。我怎样才能做到最好? 效率高吗?

我正在练习,这实际上是我想开始的第一个小讨论。所以...战斗! ;)

更新: 我看到了一种有趣的方式来开始活动并获得结果。 Launching activity through intents .活动开始后是否可以插入新/更新视图?然后,我将在单独的活动中生成我的结果。更新视图。返回“仪表板”并加载刚刚更新的视图。可能的?还是效率低下?以及如何更新另一个活动的视图?我需要学习的东西太多了:/

更新 2: 一个很好的例子:Google+ 太糟糕了,我没有他们的源代码;)

更新3: 什么是最好的?

  • 加载新活动,禁用动画并设置选定的工具箱选项卡 + 禁用后退按钮功能
  • startActionForResults,获取结果并更新当前视图(仍然不知道这怎么可能)
  • viewFlipper onflip 改变+更新翻转视图中的数据。

我仍然不知道任何有效的解决方案。还是我错过了一些重要的东西?我刚刚完成了我的 ListActivity 以从我的网络服务中获取数据。但它仍然在一个单独的活动中运行。我现在如何将它实施到我的“主视图”中?当然......我可以设置一个列表我的自定义适配器。但目前我在创建 listactivity 时正在更新和从服务器获取数据。

恐怕这可能是我能得到的唯一答案:Embed external Intent in main Activity

UPDATE4:我正在尝试一些事情。 根据 nininho 的回答(谢谢!)我正在尝试以下方法:

  1. 启动 Dashboardactivity 并创建 ViewFlipper。
  2. 每个 Toolbarclick 代表一个特定的 ViewFlipper 页面。
  3. 每个页面都实现了一个 Listadapter 并显示不同的结果(不同的 Web 服务查询)。 (ListView、GridView,有profileimage,没有profileimage)
  4. 在工具栏上单击启动 AsyncTask 或服务并通知当前页面中的列表数据已更改。 (当然如果数据发生了变化)。切换到被点击的页面。
  5. 实施更新功能。滚动到列表底部 = 获取更多数据并添加它。 5 分钟后自动更新其他列表。或点击更新按钮更新列表。

迄今为止的专业人士:整个活动的独立后退按钮。可以进行翻页动画。列表的异步更新,仍然可以切换到另一个列表。

缺点: ...有人有吗?这种方法的效率如何? ViewFlipper 是否携带所有信息,因此性能会下降,或者 viewflipper 是否回收其视图(如 ListView)?

更新5: 如果我有时间,我会让这里的所有内容更具阅读性和讨论性。不要因为我看我的垃圾而生我的气;)

【问题讨论】:

    标签: android view android-activity


    【解决方案1】:

    据我了解,您希望您的应用启动,从互联网上获取一些数据,然后在主屏幕上显示这些数据。

    我认为不需要第二个活动来获取数据,因为根据您的解释,您只想使用它来获取数据,因此最好的方法是:

    1. 创建一个活动(您的仪表板)
    2. 在后台启动 AsyncTask 或 Service 以获取数据。
    3. 当提取结束时,通知活动它已经结束。
    4. 更改您的仪表板以显示列表(如果您想要一些动画,或者只是创建一个列表不可见的布局,然后更改为可见,则可以使用 ViewSwitcher)。

    ps:您可以在 ListActivity 之外使用 ListView,只需创建一个 ListAdapter 来创建 ListView 项并将其添加为 ListView 的适配器。

    【讨论】:

      猜你喜欢
      • 2011-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多