Android:多个视图,深层导航,一个Activity。什么是最好的处理方式?

时间:2012-03-31 04:01:45

标签: android view android-activity tabs navigation

我正在寻找在Android应用中重现 UITabBarController 中iPhone UiNavigationController 行为的最佳方法。

我正在开发这款Android应用,我有一个TabActivity和4个标签。我已经经历过很多关于活动和标签使用的帖子,以及一个好主意如何将活动用于所有事情,这看起来很公平。我决定在每个选项卡上使用一个Activity,因为它在我的应用程序中是有意义的。

但是,在其中一项活动中,我有一个深度导航树,其中包含多个分支,最多可以有12个不同的视图。

问题是:Android控制应用程序内部活动的导航,如果单击后退按钮,它将转到上一个,但如果我浏览视图,使用一个活动,然后单击返回,则刚完成它。那么如何在Activity中的视图之间获得平滑的导航行为?

2 个答案:

答案 0 :(得分:2)

我使用TabActivityFragmentActivity作为每个标签实现了此功能。利用Fragments API,您可以像使用12种不同的活动一样组织代码,实际上每个选项卡仍然只使用1。 Fragment的框架将处理后退按键,以显示先前的片段而不是关闭整个活动。

这种方法存在一些问题,例如,没有MapFragment,但可以在SOF上找到解决方法。

如果您的最低SDK版本低于3.0,则需要Android支持包。

答案 1 :(得分:0)

我对UiNavigationViewController知之甚少,但我想你想要在不同的视图之间导航。当您使用TabActivity时,每个标签都应加载到单独的Activity中 但是既然你想要将它分支出去,那么使用那么多活动并不是一个完美的解决方案,ActivityGroup也不是。根据我的观点(我遇到类似的问题),更好的解决方案是将主要或根选项卡加载到单独的Activity中,但对于它们的分支,使用ViewFlipper,它会翻转Views。因此可以翻转整个布局(视图的子类) 翻转两个以上的视图时可能遇到一些问题(正如人们所说,虽然我从来没有遇到任何问题)。因此,在这种情况下,您可以使用layout.setVisibility(View.GONE)隐藏布局,只需使用View.VISIBLE进行更改即可进行下一个视图。
关于后退按钮的问题,您需要将最后使用的View或Activity存储到变量中,并且在覆盖onBackPressed()时,只需要调用它们。

可能有比这更好的解决方案,而不是我记得,但是,这是我能提出的最简单的解决方案。