【发布时间】:2011-09-18 23:49:46
【问题描述】:
我在选项卡中有 TabActivity 和其他三个活动。在清单文件中,我有一行:
android:configChanges="orientation|keyboardHidden|keyboard"
在 TabActivity 的 <activity> 标记以及其他三个活动中。我还在我的所有活动中覆盖了onConfigurationChanged(Configuration newConfig) 方法。它几乎在所有情况下都能正常工作。之后手机屏幕仅在横向模式下显示为空白,我点击了主页按钮,接下来我想更改方向,方法 onConfigurationChanged 尚未被调用。
我使用过 Toast 类,我知道此时已调用 TabActivity 的唯一方法 onConfigurationChanged,但未调用选项卡中当前活动的此方法。但是,当我再次更改方向时,活动选项卡中当前活动的 onConfigurationChanged 方法已被调用。我该如何修复这个错误?我的代码可以正常工作,但在这种情况下不行。
我注意到当我在 TabActivity 中切换选项卡并更改方向时会出现类似的问题。但现在我无法解释它什么时候起作用,什么时候不起作用。我陷入困境。我知道 TabActivity 的 onConfigurationChanged 方法总是在调用。但这种在选项卡中进行活动的方法 - 并非总是如此。
【问题讨论】:
-
如果我理解正确,您使用 toast 来通知您配置更改。我建议调试应用程序并在
onConfigurationChanged上设置断点,以验证该函数确实没有在您期望的时候被调用。 -
是的,我正在使用 Toasts 来通知我配置更改。我已经在
onConfigurationChanged上使用断点调试了我的应用程序。如果我的手机处于横向模式,设备被锁定,并且我在纵向模式下解锁设备并将方向更改为横向,那么这个功能确实没有被调用,现在onConfigurationChanged方法还没有被调用调用。 -
我曾希望问题只是通过反映更改,但它似乎更复杂。如果您只能通过锁定/解锁来重现它,您可以手动检查
onResume()中的配置。恐怕我没有与您的问题相关的任何其他建议。 -
如果您满足以下条件,则不会调用回调: 1.) 切换到另一个选项卡 (rotation=0) 2.) 旋转 (rotation=90) 3.) 返回原始选项卡 (rotation= 90) 4.) 再次旋转 (rotation=0) ... 似乎活动正在检查更改的旋转,但没有得到由其他选项卡引起的事件。
标签: android android-tabhost tabactivity android-configchanges