【问题标题】:Converting Multiple Activites into a Single Fragment将多个活动转换为单个片段
【发布时间】:2011-04-11 13:19:00
【问题描述】:

我最近决定更新我的应用程序以支持蜂窝 3.0 中的新片段功能。 我的应用程序当前在一个列表视图上工作,该视图根据单击的列表项打开不同的活动。 使用this tutorial 中的代码改编,我创建了一个仅包含两个活动的应用程序,但取决于单击哪个列表项,第二个“查看器”活动使用不同的布局 xml 启动。

不幸的是,我无法弄清楚如何调用具有所有功能的旧方法。我应该导入所有旧活动,然后将方法调用到查看器活动中(我可能需要一些关于如何执行此操作的建议)还是应该将所有方法直接放入同一个查看器活动中(请考虑这些方法(顺便说一句非常大))。

一旦一切都预先与两个活动一起工作,那么“分割”应用程序将是一项非常简单的任务,如 here 所示 虽然我还没有考虑过可能有一种方法可以让多个片段在一个活动中占据相同的空间(如果是这种情况,请告诉我它是如何完成的)

谢谢

【问题讨论】:

    标签: android android-activity android-3.0-honeycomb android-fragments


    【解决方案1】:

    正如 James 所指出的,您必须将业务逻辑从您的活动转移到您的片段中。 要处理事件,您可以创建一个侦听器接口。 CONTAINER 活动/ies 将实现此接口。由于片段可以访问容器活动,您将能够将所需事件的“逻辑”委托给容器活动。对于此事件,活动将决定是否启动新活动、显示/隐藏新片段或其他任何内容。

    我也有类似的问题,看问答:here

    虽然我还没有考虑过可能有一种方法可以让多个片段在一个活动中占据相同的空间(如果是这种情况,请告诉我它是如何完成的)

    我认为允许多个片段在一个活动中占据相同的空间是可能的。再次,看看答案here ...我认为 Activity 的概念/范围已经发生了一些变化,现在一个 Activity 可以包含不同的片段,每个片段都允许用户做一个专注的事情。

    【讨论】:

      【解决方案2】:

      我不确定您所说的“调用具有所有功能的旧方法”是什么意思。您需要将所有活动类重写为片段。查看this tutorial here(非常简洁)。基本上,您需要一个由 ListFragment 和 FrameLayout 组成的活动。您的 ListFragment 将通过根据选择的行更改为适当的 Fragment 来更新 FrameLayout。

      【讨论】:

      • 我所说的保留功能的意思是我的旧活动具有 onClickHandlers,因此当单击按钮时会发生计算。 ATM 我已经设法让布局显示,但我无法重新实现 ClickHandlers。我想知道您是否知道解决此问题的好方法。
      • 您能具体说明您遇到的问题吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-21
      • 1970-01-01
      • 1970-01-01
      • 2018-11-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多