如何使用ProgressDialog显示处理方向更改?

时间:2010-09-12 15:54:05

标签: android orientation progressdialog

我在AsyncTask对象的ProgressDialog方法中显示onPreExecute,并在onPostExecute方法中取消ProgressDialog。在doInBackground方法中,我正在为用户注册发出HTTP请求。我希望允许更改屏幕方向。当我在doInBackground方法仍在运行时更改方向时,我会收到各种有趣的错误,例如'IllegalArgumentException:View未附加到窗口管理器'和'RegisterScreen已泄露窗口......'

如何在更改方向后正确继续显示ProgressDialog?或者,如果用户请求提交注册后如何禁用方向更改?

6 个答案:

答案 0 :(得分:15)

尝试将此属性android:configChanges="orientation"添加到Activity文件中的AndroidManifest.xml元素。

答案 1 :(得分:6)

您可以尝试在显示ProgressDialog期间禁用方向更改。

一开始就做:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);

并在完成后启用:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);

希望这有帮助。

(如果有人有正确的解决方案,我也会感兴趣: - )

答案 2 :(得分:4)

您希望正确处理活动生命周期,这意味着保存和恢复活动状态,而不是尝试阻止生命周期更改。对AsyncTask与活动生命周期进行一些阅读。

例如:pause-and-resume-asynctasks-androidwhat-to-do-with-asynctask-in-onpause

答案 3 :(得分:2)

在应用程序manifest.xml中的activity标记中添加它

<activity android:label="@string/app_name" android:configChanges="keyboardHidden|orientation|screenSize" android:name=".your.package"/>

答案 4 :(得分:1)

在我的情况下,我使用了

android:configChanges="orientation" 

但它对我不起作用

以下工作正常

<activity android:name=".MyActivity" 
          android:configChanges="orientation|screenSize|screenLayout">
</activity>

答案 5 :(得分:-1)

您可以在“清单”中使用以下代码

<activity android:label="@string/app_name" 
        android:configChanges="orientation|keyboardHidden" 
        android:name=".your.package">