java.lang.Sınıftır: Görünüm pencere yöneticisi ve ona bağlı
AsyncTask başlayan bir aktivite var ve ilerleme işlem süresi için iletişim gösterir. Etkinlik dönüşü veya klavye ile yeniden ilan etti.
<activity android:name=".MyActivity"
android:label="@string/app_name"
android:configChanges="keyboardHidden|orientation"
>
<intent-filter>
</intent-filter>
</activity>
Görev tamamlandığında, bir iletişim ben dissmiss, ama bazı telefonlar (çerçeve: 1.5, 1.6) böyle bir hata atılır:
java.lang.IllegalArgumentException: View not attached to window manager
at android.view.WindowManagerImpl.findViewLocked(WindowManagerImpl.java:356)
at android.view.WindowManagerImpl.removeView(WindowManagerImpl.java:201)
at android.view.Window$LocalWindowManager.removeView(Window.java:400)
at android.app.Dialog.dismissDialog(Dialog.java:268)
at android.app.Dialog.access$000(Dialog.java:69)
at android.app.Dialog$1.run(Dialog.java:103)
at android.app.Dialog.dismiss(Dialog.java:252)
at xxx.onPostExecute(xxx$1.java:xxx)
Benim kod:
final Dialog dialog = new AlertDialog.Builder(context)
.setTitle("Processing...")
.setCancelable(true)
.create();
final AsyncTask<MyParams, Object, MyResult> task = new AsyncTask<MyParams, Object, MyResult>() {
@Override
protected MyResult doInBackground(MyParams... params) {
// Long operation goes here
}
@Override
protected void onPostExecute(MyResult result) {
dialog.dismiss();
onCompletion(result);
}
};
task.execute(...);
dialog.setOnCancelListener(new OnCancelListener() {
@Override
public void onCancel(DialogInterface arg0) {
task.cancel(false);
}
});
dialog.show();
(http://bend-ing.blogspot.com/2008/11/properly-handle-progress-dialog-in.html) ve Android kaynaklarında görülen okudum ne kadar özel etkinlik yok olduğunda bu sadece olası bir durum gibi görünüyor. Fakat daha önce de belirttiğim gibi, temel etkinlikler için etkinlik Rekreasyon yasaklıyorum.
Herhangi bir öneriniz çok takdir.
CEVAP
Ben de bu hatabazenben iletişim kutusunu kapatmak ve onPostExecute metodu etkinliği bitirmek. Bazen aktivite iletişim başarılı bir şekilde kapatılır, önce bitmiş olur sanırım.
Basit, benim için çalışan etkili bir çözüm henüz
@Override
protected void onPostExecute(MyResult result) {
try {
if ((this.mDialog != null) && this.mDialog.isShowing()) {
this.mDialog.dismiss();
}
} catch (final IllegalArgumentException e) {
// Handle or log or ignore
} catch (final Exception e) {
// Handle or log or ignore
} finally {
this.mDialog = null;
}
}
android Görünümü pencere yöneticisi ve...
java.lang.Sınıftır: AppCompat geçerli ...
Android başarısız - java İnşa.lang.Sın...
Neden java ile sonuna kadar.lang.Casba...
İle " uğraşan;java.lang.OutOfMemor...