【问题标题】:Android: Multiple views, deep navigation, one Activity. What is the best way to handle?Android:多视图、深度导航、一个 Activity。最好的处理方法是什么?
【发布时间】:2012-03-31 04:01:44
【问题描述】:

我正在寻找在 Android 应用程序中重现 iPhone UiNavigationControllerUITabBarController 中行为的最佳方式。

我正在开发这个 Android 应用程序,其中有一个 TabActivity 和 4 个选项卡。我已经浏览了很多关于使用活动和选项卡的帖子,以及对所有事情都使用活动不是是一个好主意,这似乎很公平。无论如何,我决定在每个选项卡上使用一个 Activity,因为它在我的应用程序中是有意义的。

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

问题是:Android通过应用程序内的活动控制导航,如果您单击后退按钮,它将转到上一个按钮,但是如果我在视图中导航,使用一个活动,然后单击返回,它刚刚完成它。那么如何才能在 Activity 中的视图之间实现流畅的导航行为呢?

【问题讨论】:

    标签: android view android-activity tabs navigation


    【解决方案1】:

    我使用TabActivityFragmentActivity 作为每个选项卡来实现这一点。使用Fragments API,您可以像使用 12 个不同的活动一样组织代码,实际上每个选项卡仍然只使用 1 个。 Fragment 的框架将处理返回键,以便您显示前一个 Fragment,而不是关闭整个 Activity。

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

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

    【讨论】:

    • 我最终使用了 Android 支持包,它运行良好。谢谢 ernazm。
    【解决方案2】:

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

    可能有比这更好的解决方案,虽然我不记得了,但是是的,这是我能想到的最简单的解决方案。

    【讨论】:

    • 谢谢伙计,但这仍然不理想。 ViewFlipper 只不过是一个切换视图的动画。我可以隐藏和显示视图,但我正在寻找一种简单且有条理的方式来处理用户可以在同一个 Activity 中浏览的多达 12 个不同视图之间的深度导航。我正在研究使用加载所有视图的 id 的堆栈的想法,所以我总是会引用最后一个和它的 id,从中我可以轻松地链接正确的小部件。但无论如何,我想我也会在某个时候使用 ViewFlipper。
    猜你喜欢
    • 2010-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-26
    • 1970-01-01
    • 2010-10-10
    • 2011-02-26
    • 1970-01-01
    相关资源
    最近更新 更多