将多个活动转换为单个片段

时间:2011-04-11 13:19:01

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

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

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

一旦所有内容都预先处理了两项活动,那么按照演示here进行“分段”应用程序将是一项非常简单的任务 虽然我没有考虑过可能有一种方法允许多个片段占用活动中的相同空间(如果是这种情况,请告诉我它是如何完成的)

由于

2 个答案:

答案 0 :(得分:1)

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

我有一个类似的问题,看看问题和答案:here

  

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

我认为可以允许多个片段占用活动中的相同空间。再次,看看答案here ...我认为Activity的概念/范围有所改变,现在一个Activity可以包含不同的片段,每个片段都允许用户做一个专注的事情。 / p>

答案 1 :(得分:0)

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