如何验证选项卡更改选项卡中的输入数据?

时间:2013-01-11 08:13:02

标签: java android tabs listener android-tabhost


我有这样的应用结构:
App Structure
背景:
父活动#1只是持有标签主机,标签小部件,并且还设置3个标签以将其内容设置为3标签{{ 1}}(tab1,tab2,tab3活动)。

  

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



问题:
我想验证用户在表单字段中输入的数据在单个标签活动onTabChanged事件但是我无法设置超过一个activities
我在这里遗漏了什么吗?
setOnTabChangedListener方法下,听众被设置在他们自己的标签#活动中。

除了尝试上述技巧外,我曾尝试在主要父活动#1下的oncreate中设置监听器。但是从未调用onResume()方法。我也得到了一个空指针异常。

验证背后的想法是:我希望在用户更改标签时,数据应该在他可以跳过标签之前进行验证。因此,如果选择了选项卡#2 /选项卡#3,我会要求选项卡#1验证类似于on Resume()的事件中的数据。
此外,如果选择了当前选项卡#2,这将适用用户选择标签#1 /标签#3

任何建议都将受到赞赏..
感谢阅读..

1 个答案:

答案 0 :(得分:1)

  

我想验证用户在表单字段中输入的数据   单个标签活动onTabChanged事件但我无法设置   不止一个setOnTabChangedListener。

不需要第二个OnTabChangeListener,即使您可以设置它也不会帮助您。在构建代码时,您需要访问子活动。您可以使用this question中的一个答案来完成此操作。问题是,除了接受的答案之外,这些答案都使用了弃用的方法。

我在注释中提出的方法是在用作选项卡的每个子活动中都有一个静态布尔字段,并且只要那些视图中的视图状态发生更改,您的所有活动都会更新该布尔标志。活动(如果您查看CheckBox,请在EditText等中输入内容。然后,您只需在OnTabChangeListener中查看所需子活动的标记即可。我的方法应该可行,但你的代码有点乱,所以你必须修改它。

  

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

您的代码获得NullPointerException是正常的,因为我没有看到您在OnTabChangeListener中初始化对您使用的子活动的引用的位置。

此外:

请勿使用TabActivity。它已被弃用,支持更灵活的Fragments框架。这些片段可以帮助你,因为,如果当前页面的验证失败并且OnTabChangeListener可能会有点迟到(但我可能会误解你想要的东西),我想你想停止更改标签。

作为旁注,请在代码中使用equals来测试String平等,而不是==