4

我正在开发一个将捕获图像作为功能之一的应用程序。在我的主屏幕上,我有两个微调器。选择微调器值后,用户可以通过单击拍照按钮来捕捉图片。直到这个工作正常。但问题在于Camera App Orientation。

拍照按钮启动相机。当图像被捕获时,它被保存(绝对没问题)并返回到父活动。但问题是它刷新了活动。回来时,我可以看到以下有线内容

1.)有时它会显示横向屏幕(1 秒)并返回到刷新活动并导致重置 Spinner 值的纵向。

2.) 有时它只是重置 Spinner 值。

这真的很烦人。我没有任何线索来解决这个问题。我希望你们中的一些人能解决这个问题。

非常感激。

4

1 回答 1

2

当您在另一个应用程序(相机)中启动活动时,最好为任何事情做好准备。Activity 可能会返回错误数据,屏幕方向可能会改变,或者用户返回您的应用程序可能需要很长时间。根据您的描述,每次启动相机应用程序时,方向似乎都会发生变化。

Android 有内置的状态管理方法来处理这种类型的场景。您可以覆盖该onSaveInstanceState()方法来存储您的活动状态(例如,微调器值),然后将该状态恢复到onCreate(). (此处为示例。)这将处理您启动相机应用程序或您的用户按下主页按钮然后返回应用程序等情况。

编辑

onRestoreInstanceState()仅当您的活动因内存压力而被终止并稍后重新创建时才会调用。Bundle使用传递给onCreate() (在设备旋转后再次调用)更可靠。这Bundle将包含存储在onSaveInstanceState().

如果你需要将你的工作推迟到onResume(),你会想要onCreate()在你的类中填充一些成员变量Activity,然后在onResume().

于 2012-10-29T12:50:41.627 回答