0
내 활동에는 인터넷에 연결하여 데이터베이스에 데이터를 저장하는 비동기 작업이 있습니다. 이 작업은 내가 예외거야 실행되는 동안 나는 방향을 변경할 때 는 :오리엔테이션 변경에 지연을 설정하는 방법이 있습니까?
가 @Override
protected void onPreExecute() {
isRefreshing = true;
this.dialog.setMessage("Lädt Daten...");
this.dialog.show();
}
@Override
protected void onPostExecute(String successful) {
if (!isFinishing()) {
if (successful.equals("succeed")) {
Toast toast = Toast.makeText(context, R.string.toast_refresh_succeed, Toast.LENGTH_LONG);
toast.show();
}
else if (successful.equals("failed")) {
Toast toast = Toast.makeText(context, R.string.toast_refresh_failed, Toast.LENGTH_LONG);
toast.show();
}
if (this.dialog.isShowing()) {
this.dialog.dismiss();
}
}
}
내가 지금 원하는 것은을 설정하는 것입니다 :
07-27 16:01:45.956 10173-10173/de.MayerhoferSimon.Vertretungsplan E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.IllegalArgumentException: View not attached to window manager
at android.view.WindowManagerImpl.findViewLocked(WindowManagerImpl.java:668)
at android.view.WindowManagerImpl.removeView(WindowManagerImpl.java:364)
at android.view.WindowManagerImpl$CompatModeWrapper.removeView(WindowManagerImpl.java:163)
at android.app.Dialog.dismissDialog(Dialog.java:347)
at android.app.Dialog.dismiss(Dialog.java:330)
at de.MayerhoferSimon.Vertretungsplan.MainActivity$1.onPostExecute(MainActivity.java:129)
at de.MayerhoferSimon.Vertretungsplan.MainActivity$1.onPostExecute(MainActivity.java:90)
at android.os.AsyncTask.finish(AsyncTask.java:631)
을 그래서 이것은 내 AsyncTask를 모습입니다 것입니다 오리 엔테이션 변경을 지연 시키면 다시 발생하지 않으며 오리엔테이션은 AsyncTask가 완료 될 때만 변경됩니다.
http://stackoverflow.com/questions/3821423/background-task-progress-dialog-orientation-change-is-there-any-100-working/3821998#3821998. 이것이 도움이 될지 확인하십시오. – Raghunandan
http://www.androiddesignpatterns.com/2013/04/retaining-objects-across-config-changes.html 조각을 사용하는 것이 여기 있습니다. – Raghunandan