【发布时间】:2011-12-22 03:09:32
【问题描述】:
我的代码在越来越小的设备(摩托罗拉 Xoom、三星 Galaxy Player 4.0、Kyocera Digno)上按预期工作,但对于三星 Galaxy Tab 7.0,在启动 ACTION_IMAGE_CAPTURE 意图并拍照后,应用程序返回调用onDestroy(),然后调用onCreate(),然后调用onActivityResult(),最后再次调用onDestroy()和onCreate(),这当然是不可取的——只有onActivityResult()应该被调用。
可能的线索:
- Galaxy Tab 7.0 的屏幕尺寸在清单文件中明确不支持(这是我测试过的唯一一款屏幕尺寸不受支持的设备),因此用户可以选择适合或缩放的屏幕尺寸-适合。两个 UI 具有相同(不良)的行为。
- 预览图片时,相机活动似乎会切换方向。我的应用仅支持纵向模式(edit: 在较小的屏幕上 - 在非 xlarge 屏幕上,它支持方向更改)。也许方向变化正在以某种方式破坏我的活动。
- 我已尝试从不同的意图(电子邮件意图)启动和返回,但在这种情况下,我的应用程序不会被销毁并重新创建。
如果需要更多信息或代码示例,请告诉我。
编辑:问题已缩小到方向变化。根据 Karthik 的回答,设置 android:configChanges="orientation" 可以解决此问题。唯一的问题是,我的应用程序支持 xlarge 屏幕上的方向更改。此设置会破坏这些设备上的此功能。我尝试使用android:configChanges="@string/config_changes" 并根据屏幕大小提供不同的字符串,但现在我收到“安装错误:INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION”。据此,Android Activity, how to override manifest's android:configChanges with Java code?,没有办法以编程方式设置它。我唯一的选择是手动处理我的应用程序中的所有方向变化吗?
【问题讨论】:
-
我猜你必须手动处理活动中的方向变化,对于 xlarge 屏幕。或者为 xlarge 设备使用单独的 APK(带有 Manifiest 更改)。
标签: java android galaxy-tab