最佳实践活动 - 在android中切换和查看更改

时间:2011-07-20 15:16:26

标签: android view android-activity

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

让我说我编程一个Android应用程序(惊喜..我真的这样做)

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

  1. 用户可以登录[3]或注册[2]。如果他登录,则会启动新活动并显示其仪表板。如果他注册:注册过程的活动开始。
  2. 注册过程:用户输入所需的用户名和密码,然后按下按钮接受。他的数据将被验证,如果有效,则可以从他可以选择其设置的新活动开始。后退按钮工作,数据可以传递给新活动。在最后一个注册窗口数据将被保存并且仪表板启动之后。开始新活动很有趣!
  3. 现在它变得复杂了。 Dasboard有一个'actionbar'(顶部)和一个'toolbar'(底部,像标签一样)。因此,应该在视口的中间部分查看所有内容(从现在称为主视图)。没有更多的活动切换:(,tho。 目前,每个tabclick都会从主视图中删除所有视图并添加其新视图。看起来很棒,可以动画,像魅力一样。除外:它目前不是动态的。
  4. 所以...我不知道如何以最好的方式解决它。例如:我从webservice获取数据,从中创建一个listview,并且它扩展了list活动。我无法启动此活动,但需要将此数据放入主视图中。我怎么能以最好的方式做到这一点? 它有效吗?

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

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

    UPDATE2: 应用程序的一个很好的例子:Google+ 太糟糕了我没有他们的源代码;)

    UPDATE3: 什么是最好的?

    • 加载新活动,禁用动画并设置所选工具箱标签+ 禁用后退按钮功能
    • startActionForResults,获取结果并更新当前视图(仍然不知道如何做到这一点)
    • viewFlipper onflip在翻转视图中更改+更新数据。

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

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

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

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

      PRO :整个活动的Backbutton独立。页面翻转动画可能。列表的异步更新,仍然可以切换到另一个列表。

      CONs: ......有人有吗?这种方法的效率怎么样? ViewFlipper是否包含所有信息,因此性能会下降或viewflipper是否会回收其视图(如ListView)?

      UPDATE5: 如果我有一些时间,我将使这里的一切更加阅读和讨论。读我的垃圾不要生我的气;)

1 个答案:

答案 0 :(得分:1)

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

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

  1. 创建一个活动(您的信息中心)
  2. 在后台启动AsyncTask或Service以获取数据。
  3. 获取结束时,通知活动结束。
  4. 更改仪表板以显示列表(如果您想要一些动画,可以使用ViewSwitcher,或者只是创建一个列表不可见,然后更改为可见的布局)。
  5. ps:你可以在ListActivity之外使用ListView,只需创建一个ListAdapter来创建ListView项,并将其添加为ListView的适配器。