0


我有一个这样的应用程序结构:
应用结构
背景:
父活动 #1 只是持有选项卡主机、选项卡小部件,并且还设置了 3 个选项卡以将其内容设置为 3 个选项卡activities(tab1、tab2、tab3 活动)。

更新: 我尝试在父活动 #1 的 onTabChangedListener 中调用我的验证方法,但我得到了一个空指针异常。无法真正追踪到任何地方。我确实评论/删除了冲突代码,但我仍然没有遇到瓶颈。StackTrace(PasteBin 链接)。父 Activity #1代码, Tab#1 Activity



问题:
我想验证用户在单个选项卡活动 onTabChanged 事件的表单字段中输入的数据,我无法设置多个setOnTabChangedListener.
我在这里错过了什么吗?
侦听器在方法下的自己的 tab# 活动中设置oncreate

除了尝试上述技术之外,我还尝试在onResume()主要的 Parent 活动 #1 下设置监听器。但是该on Resume()方法从未被调用过。我也有一个空指针异常。

验证背后的想法是:我希望在用户更改选项卡时,应该在他可以跳过选项卡之前验证数据。因此,实际上我需要 tab#1 在类似于选择onTabChangedtab#2/tab#3 的事件中验证数据。
此外,如果选择当前选项卡#2 并且用户选择选项卡#1/选项卡#3,这将适用

任何建议将不胜感激..
感谢阅读..

4

1 回答 1

1

我想验证用户在单个选项卡活动 onTabChanged 事件的表单字段中输入的数据,但我无法设置多个 setOnTabChangedListener。

不需要一秒钟OnTabChangeListener,即使您可以设置它也无济于事。在构建代码时,您需要访问子活动。您可以通过使用此问题中的答案之一来做到这一点。问题是,除了接受的答案之外,这些答案都使用了已弃用的方法。

我在评论中提出的方法是在每个用作选项卡的子活动中都有一个静态布尔字段,并让您的所有活动在这些活动中的视图状态发生变化时更新该布尔标志(如果您检查 a CheckBox,在 an 中输入内容EditText等)。然后,您可以简单地在OnTabChangeListener. 我的方法应该可以,但是您的代码有点混乱,因此您必须对其进行大量修改。

我曾尝试在主要父活动 #1 下的 onResume() 中设置监听器。但是从未调用过 on Resume() 方法。我也有一个空指针异常。

您的代码得到 a 是正常的,NullPointerException因为我没有看到您在哪里初始化对您在OnTabChangeListener.

还:

不要使用TabActivity. 它已被弃用,取而代之的Fragments是更灵活的框架。这些片段可以帮助你,因为,我认为如果当前页面的验证失败并且OnTabChangeListener可能来晚了(但我可能弄错了你想要的东西),你想停止更改选项卡。

作为旁注,equals在您的代码中使用来测试String相等性而不是==.

于 2013-01-11T18:42:04.497 回答