我们正在编写一个具有4个标签的应用程序:地图,人物,地点,活动.应用程序中的人物,地点和事件在地图上显示为图标.默认情况下,“人物”,“地点”和“事件”选项卡分别显示列表视图,自定义渲染,分别显示所有“人物”,“地点”和“事件”.

alt text http://web6.twitpic.com/img/37202700-f92052dc474b74e1760edda1c47f6940.4adcb134-scaled.png

现在,现在每个选项卡都有一个Intent设置为启动相应的活动.例如,有一个Maptabactivity扩展了MapActivity,一个ShowPeopleListActivity显示了人物,等等.

我看到一个lot of StackOverflow questions /答案说,由于TabHost的设置方式的各种限制,最好不要使用活动作为选项卡的内容.例如,不可能启动一个新的活动,并取代现有活动在一个选项卡,而可以切换一个视图与不同的视图.

现在,我在十字路口.我们(或更好或更坏)投入了大量的时间试图让这个应用程序的工作方式,目前的结构,活动作为选项卡的内容.当单击与人物,地点或事件对应的图标时,它将触发与该对象相对应的URI上的VIEW意图;这是一个Activity,然后显示对象.地图和个人列表中都有相同的机制.我们真的喜欢这个给我们提供的松耦合;我们只是给一个VIEW命令和URI给人/地点/事件,它会自动带给我们正确的活动.可以说,开展的活动涵盖了标签视图,而不是出现在这个视图中,但我们愿意与此共同生活.

这里有一个问题:从展会活动中,我们希望能够回到地图上,以人,地点或事件为中心.我们可以启动一个新的活动来再次显示地图,但现在我们将地图活动作为选项卡的内容,再加上展示活动,加上活动堆栈中的新地图活动;鉴于地图活动的资源密集程度,我猜这不是理想的方式.

我想我的问题是,有没有一个好的教程在哪里显示如何使用TabHost做复杂的任务?我看过HelloTabWidget;我正在寻找比这更复杂的东西.我担心如果我们切换到基于View的做事方式,我们必须做很多内务来截取所有的后台事件,尝试切换视图等,以及以我们不想要的方式强烈地耦合我们的程序.

对前进道路的任何建议将非常感谢.我们是Android的新手,所以我们试图遵循既定的最佳做法,但是当我们看到的几个例子对我们的用例来说太简单时,这很难.

解决方法

I see a lot of StackOverflow
questions/answers saying that due to
varIoUs limitations in the way the
TabHost is setup,it’s best NOT to use
activities as the content of tabs.

作为反职业联盟(AATA)的自主任主席,这当然是我的立场.

When an icon corresponding to a
Person,Place,or Event is clicked,it
fires off a VIEW Intent on a URI
corresponding to that object; this is
picked up by an Activity that then
shows the object.

请注意,这与将活动作为选项卡的内容无关.

We can launch a new activity to show
the map again,but Now we have the map
activity as the content of the tab,
plus the show activity,plus the new
map activity in the activity stack;
given how resource intensive the map
activity is,I’m guessing this is not
the ideal way to go.

我可以避免它.

I’m worried that if we switch to the
View based way of doing things,we’ll
have to do a LOT of housekeeping to
intercept all the back events,try to
switch out the views,etc.,as
well as strongly coupling our program
in a way we don’t want.

这完全不符合你以前写过的内容.使用“视图”作为选项卡的内容并使用“活动”作为选项卡的内容,您的“后退事件”将不会更改iota.此外,这与您所描述的“松散耦合”模式无关,点击标签中视图中的列表中的图标与点击活动视图中的列表中的图标没有什么不同一个标签

只要让你的Show活动告诉你的主要活动来显示一个特定的位置,那么Show活动可以完成().在没有在活动之间引入硬JVM耦合的情况下,最简单的方法是广播Intent并在主要活动中注册broadcastReceiver.收到此意图后,主要活动将更新地图并将其设置为当前选项卡.当然,如果您的主要活动使用其选项卡内容的视图,则此方法更为简单.

现在,如果您尝试检查您的应用程序,那么在选项卡中导航不会启动另一个活动,而是将内容保留在自己的选项卡中…这是一个完整的“水壶”.

java – Android – Tabs,MapView,选项卡内的活动的更多相关文章

  1. AmazeUI中各种的导航式菜单与解决方法

    这篇文章主要介绍了AmazeUI中各种的导航式菜单与解决方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  2. 使用layui框架实现点击左侧导航切换右侧内容且右侧选项卡跟随变化的效果

    这篇文章主要介绍了基于HTML5实现点击左侧导航切换右侧内容且右侧选项卡跟随变化的效果,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  3. ios – 如何调整标签栏徽章位置?

    我在标签栏上显示徽章,但是当数字增加时,它会转到标签栏项目,如图所示我想稍微向左移动徽章视图,使其适合选定的选项卡image.i尝试如here所述,但没有运气.那么有没有办法调整徽章视图位置?任何帮助将不胜感激.解决方法我发现Kateryna的答案对于让我走上正轨非常有用,但我必须稍微更新一下:请注意,选项卡整数不是零索引,因此第一个选项卡将是数字1,第二个选项卡将是2,等等.

  4. ios – UITabBarController – Child(Tab)ViewControllers的不正确和不一致的边界

    我有一个带有两个选项卡的UITabBarController.每个选项卡都是UITableViewController.当UITabBarController出现时,两个选项卡视图都有不正确的边界.第一个选项卡正确位于导航栏下方,但延伸到底部的选项卡栏下方.第二个选项卡是另一种方式,从导航栏下方开始,但在底部的选项卡栏之前正确停止.我正在创建和呈现TabBarController,如下所示:然后在

  5. xcode – 隐藏或丢失构建阶段选项卡

    ..构建阶段选项卡.如何使用工具栏中的“构建阶段”选项卡显示布局,并将其保存以用于我的项目?顺便说一句,我使用XCode3.2可能是版本限制?解决方法听起来这些教程适用于Xcode4.对于您的版本,如果您在侧边栏中打开目标,则应该有一些组.这些是你的构建阶段.只需将库拖到类似“LinkExecutable”之类的库中,或单击复选框将其添加到目标,它应该自动进入.

  6. ios – 单击UITabBarController时的自定义操作

    我有一个标签栏控制器,它添加了四个导航控制器.导航控制器在选项卡栏控制器中显示为选项卡栏项目.现在我想在标签栏中添加第五个按钮,它不会打开另一个视图,但会触发一些自定义代码.我想在单击该标签栏项目时显示重叠的“共享菜单”,无论用户在哪四个页面中.我怎样才能做到这一点?

  7. iOS 7.1问题 – Tabbar调整大小不起作用

    自从我更新到iOS7.1后,选项卡的大小调整不再起作用:此代码导致选项卡向上移动,但下方有一些空白区域.任何人都可以解决这个问题?

  8. 缺少ios开发签名身份(null)

    当我尝试生成ipa文件时,我收到此错误.无法解决.请帮我解决此错误:我有自己的帐户,在我的钥匙链中访问它的鞋子像这样:我没有使用新的Mac,我已经创建了ipa.Day.但今天无法做到.我也有.cer个人资料.它有效解决方法这是Apple发表的声明.Thanksforbringingthistotheattentionofthecommunityandapologiesfortheissuesyou

  9. ios – 存档期间不存在Xcode环境变量

    我有一个具有TestFlight构建方案的iOS应用程序.在此方案中,我在“运行”选项卡中设置了一个称为TESTFLIGHT的环境变量,值为1.此外,在构建方案的“配置文件”选项卡中,它已选中“使用RUn操作的参数和变量”选项,并在列表中看到相应的EV.当从Xcode运行应用程序时,这可以正常工作,但是当我在存储设备上运行应用程序时,环境变量TESTFLIGHT不存在.我的问题是有一个我在这里缺少的选项/方案选项卡?

  10. ios – 如何正确地从一个Tab到另一个Tab的数据

    当我通过模拟器中的段落时,我在控制台中收到以下消息:任何帮助将不胜感激!).您可以尝试以下方法:

随机推荐

  1. bluetooth-lowenergy – Altbeacon库无法在Android 5.0上运行

    昨天我在Nexus4上获得了Android5.0的更新,并且altbeacon库停止了检测信标.似乎在监视和测距时,didEnterRegion和didRangeBeaconsInRegion都没有被调用.即使RadiusNetworks的Locate应用程序现在表现不同,一旦检测到信标的值,它们就不再得到更新,并且通常看起来好像信标超出了范围.我注意到的一点是,现在在logcat中出现以下行“B

  2. android – react-native动态更改响应者

    我正在使用react-native进行Android开发.我有一个视图,如果用户长按,我想显示一个可以拖动的动画视图.我可以使用PanResponder实现这一点,它工作正常.但我想要做的是当用户长按时,用户应该能够继续相同的触摸/按下并拖动新显示的Animated.View.如果您熟悉Google云端硬盘应用,则它具有类似的功能.当用户长按列表中的任何项目时,它会显示可拖动的项目.用户可以直接拖

  3. android – 是否有可能通过使用与最初使用的证书不同的证书对其进行签名来发布更新的应用程序

    是否可以通过使用与最初使用的证书不同的证书进行签名来发布Android应用程序的更新?我知道当我们尝试将这样的构建上传到市场时,它通常会给出错误消息.但有没有任何出路,比如将其标记为主要版本,指定市场中的某个地方?解决方法不,你不能这样做.证书是一种工具,可确保您是首次上传应用程序的人.所以总是备份密钥库!

  4. 如何检测Android中是否存在麦克风?

    ..所以我想在让用户访问语音输入功能之前检测麦克风是否存在.如何检测设备上是否有麦克风.谢谢.解决方法AndroidAPI参考:hasSystemFeature

  5. Android – 调用GONE然后VISIBLE使视图显示在错误的位置

    我有两个视图,A和B,视图A在视图B上方.当我以编程方式将视图A设置为GONE时,它将消失,并且它正下方的视图将转到视图A的位置.但是,当我再次将相同的视图设置为VISIBLE时,它会在视图B上显示.我不希望这样.我希望视图B回到原来的位置,这是我认为会发生的事情.我怎样才能做到这一点?编辑–代码}这里是XML:解决方法您可以尝试将两个视图放在RelativeLayout中并相对于彼此设置它们的位置.

  6. android – 获得一首歌的流派

    我如何阅读与歌曲相关的流派?我可以读这首歌,但是如何抓住这首歌的流派,它存放在哪里?解决方法检查此代码:

  7. android – 使用textShadow折叠工具栏

    我有一个折叠工具栏的问题,在展开状态我想在文本下面有一个模糊的阴影,我使用这段代码:用:我可以更改textColor,它可以工作,但阴影不起作用.我为阴影尝试了很多不同的值.是否可以为折叠文本投射阴影?

  8. android – 重用arm共享库

    我已经建立了armarm共享库.我有兴趣重用一个函数.我想调用该函数并获得返回值.有可能做这样的事吗?我没有任何头文件.我试过这个Android.mk,我把libtest.so放在/jni和/libs/armeabi,/lib/armeabi中.此时我的cpp文件编译,但现在是什么?我从objdump知道它的名字编辑:我试图用这个android.mk从hello-jni示例中添加prebuild库:它工作,但libtest.so相同的代码显示以下错误(启动时)libtest.so存在于libhello-j

  9. android – 为NumberPicker捕获键盘’Done’

    我有一个AlertDialog只有一些文本,一个NumberPicker,一个OK和一个取消.(我知道,这个对话框还没有做它应该保留暂停和恢复状态的事情.)我想在软键盘或其他IME上执行“完成”操作来关闭对话框,就像按下了“OK”一样,因为只有一个小部件可以编辑.看起来处理IME“Done”的最佳方法通常是在TextView上使用setonEditorActionListener.但我没有任何Te

  10. android – 想要在调用WebChromeClient#onCreateWindow时知道目标URL

    当我点击一个带有target=“_blank”属性的超链接时,会调用WebChromeClient#onCreateWindow,但我找不到新的窗口将打开的新方法?主页url是我唯一能知道的东西?我想根据目标网址更改应用行为.任何帮助表示赞赏,谢谢!

返回
顶部