繁体   English   中英

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

[英]Android: Multiple views, deep navigation, one Activity. What is the best way to handle?

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

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

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM