在片段或替代解决方案中包装活动

时间:2013-04-23 16:31:17

标签: android android-activity android-fragments

我有一个在Google Play上发布的大型已发布的铁路时刻表应用程序,现在我也计划整合公交时刻表。我的问题是这样的:

  • 目前,每当应用程序启动时,它会加载活动,您可以在其中搜索火车,让我们称之为A
  • 我已经实现了公交搜索活动的测试版,我们称之为B
  • 最终,我将提出一个混合解决方案,可以同时搜索火车和公共汽车,当然有一些限制,我们称之为C

现在,我想要实现主屏幕,因此它将具有可滑动的标签,并且标签将是A,B和C.我从未真正使用过那种标签,所以我的知识不是那么深,但是,我提出了一个解决方案,这确实有用,但它需要大量的重新编码(请记住,我的应用程序是在一年前发布的),因为我从来没有真正准备过碎片。我做的事情很THIS,而且效果非常好。但是,这意味着主屏幕应该是FragmentActivity,这很好,我可以处理。但是我不能提供A,B和C活动作为标签,它只接受片段。

问题是:我可以将已经编码的活动作为片段补充,所以我可以在它们之间滑动吗?有没有我不知道的包装机制?你能告诉我的任何其他解决方案吗?只要指出我的方向,我会做其余的事情。或者,我是谁,并且必须从头开始重新编码?没问题,如果是这样的话,我很乐意避开它。

先谢谢,欢呼。 :)

3 个答案:

答案 0 :(得分:1)

您可以做的是将片段包装在Activity中。如果您的Activity中包含多个类,那么这将是更好的选择。否则,我会改为使用wangyif2's suggestion

无论如何,你想要做前者:

public class SampleActivity extends Activity {
  ...

  public static class SampleFragment extends Fragment {
    ...

  }
}

当你最终在ActionBar

中初始化所有这些时
final ActionBar bar = getActionBar();
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

bar.addTab(bar.newTab()
            .setText("Sample")
            .setTabListener(new TabListener<SampleActivity.SampleFragment>(
                    this, "sample", SampleActivity.SampleFragment)));

我建议从API 14+样本中查看API演示。 FragmentTabs中有一个很好的例子(com.example.android.apis.app.FragmentTabs)。

答案 1 :(得分:1)

谢谢你们的建议,我确实尝试了wangyif2建议的方法,它在代码中产生了太多的开销,因为我做了一些特定的事情。

我将查看一些演示,但我想我会从头开始重新编码,这似乎是目前最干净的解决方案。

答案 2 :(得分:0)

而不是原始的活动A,B,C扩展SherlockActivity,只需更改它们以扩展SherlockFragments,并将它们提供给选项卡。

显然,你必须解决一些编译错误,即活动生命周期和fragment lifecycle之间的差异,但是一旦修复它们,你就应该好了。