3

在我的应用程序中,我使用 ImgButton 调用第二个 Activity,它在 onClick() 上调用相机意图。拍完照片后,回到我的活动中,我会显示一个警报对话框,用户可以在其中选择是否再拍一张照片。在我的清单中,我将第二个 Activity 的方向锁定为纵向,因为如果我旋转设备,AlertBox 就会消失:

<activity android:name="SecondActivity"
            android:screenOrientation="portrait"></activity>

在我的清单中,我还添加了:

android:configChanges="orientation|keyboardHidden"

对于全屏模式

android:theme="@android:style/Theme.NoTitleBar.Fullscreen"

如果我拍照并从纵向模式关闭相机意图(不旋转设备),则 2 个不同的设备会出现问题:

HTC Desire:一切正常,如果我从相机返回到我的活动,我会保存应用程序状态并恢复它们:D

Galaxy S3*:sgs3 上的摄像头似乎在横向模式下默认运行?因此,如果您返回我的活动,我的活动显示的内容是在横向模式下眨眼,并立即返回纵向模式。但是 AlertDialog 在方向更改之前显示,因此 AlertDialog 在不需要的旋转之前消失(所以我在横向模式下只看到 AlertBox 0,1 秒,然后它消失并且旋转切换回纵向模式)...

如果我从横向模式结束相机意图,无论在哪个设备上,问题与 sgs3 * 上的问题相同。

从相机返回到我的活动后,如何防止屏幕旋转?在这种不受欢迎的方向改变后,我可以简单地显示警报框吗?如果是这样,我该怎么做?还是有其他解决方法?

感谢和抱歉我的英语不好... xD

4

1 回答 1

0

我自己解决了我的问题:我只是把

警报对话框[...].show();

进入onResume()活动,所以如果我从相机意图返回到我的活动,AlertDialog 会随着屏幕旋转而不是消失。

这会导致错误WindowManager

“[包名]泄露的窗口......”

但最后它按我的意愿工作,应用程序不会崩溃......

不确定这是否是最好和正确的解决方案,但它有效。

于 2013-02-14T08:28:15.843 回答