我有这样的应用结构:
背景:
父活动#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
任何建议都将受到赞赏..
感谢阅读..
答案 0 :(得分:1)
我想验证用户在表单字段中输入的数据 单个标签活动onTabChanged事件但我无法设置 不止一个setOnTabChangedListener。
不需要第二个OnTabChangeListener
,即使您可以设置它也不会帮助您。在构建代码时,您需要访问子活动。您可以使用this question中的一个答案来完成此操作。问题是,除了接受的答案之外,这些答案都使用了弃用的方法。
我在注释中提出的方法是在用作选项卡的每个子活动中都有一个静态布尔字段,并且只要那些视图中的视图状态发生更改,您的所有活动都会更新该布尔标志。活动(如果您查看CheckBox
,请在EditText
等中输入内容。然后,您只需在OnTabChangeListener
中查看所需子活动的标记即可。我的方法应该可行,但你的代码有点乱,所以你必须修改它。
我曾尝试在main下的onResume()中设置监听器 家长活动#1。但是从未调用过Resume()方法。一世 也有一个空指针异常。
您的代码获得NullPointerException
是正常的,因为我没有看到您在OnTabChangeListener
中初始化对您使用的子活动的引用的位置。
此外:
请勿使用TabActivity
。它已被弃用,支持更灵活的Fragments
框架。这些片段可以帮助你,因为,如果当前页面的验证失败并且OnTabChangeListener
可能会有点迟到(但我可能会误解你想要的东西),我想你想停止更改标签。
作为旁注,请在代码中使用equals
来测试String
平等,而不是==
。