View not attached to window manager, dialog schließen
So habe ich die Tätigkeit als GameActivity.java
und in dieser Tätigkeit nenne ich DialogAnswer.show()
einfachsten zeigt ein Bild auf dem Bildschirm.
java.lang.IllegalArgumentException: View not attached to window manager
at android.view.WindowManagerGlobal.findViewLocked(WindowManagerGlobal.java:402)
at android.view.WindowManagerGlobal.removeView(WindowManagerGlobal.java:304)
at android.view.WindowManagerImpl.removeView(WindowManagerImpl.java:79)
at android.app.Dialog.dismissDialog(Dialog.java:325)
at android.app.Dialog.dismiss(Dialog.java:307)
at pl.evelanblog.prawdaczyfalsz.screen.DialogAnswer$1.onFinish(DialogAnswer.java:36)
at android.os.CountDownTimer$1.handleMessage(CountDownTimer.java:118)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5328)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
at dalvik.system.NativeStart.main(Native Method)
Dies ist mein DialogAnswer.java
Klasse
public class DialogAnswer extends Activity {
private static ImageView resultImage;
private static Dialog dialog = null;
public static void show(Context context, boolean fCorrect) {
dialog = new Dialog(context, android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);
dialog.setContentView(R.layout.dialog);
resultImage = (ImageView) dialog.findViewById(R.id.result_image);
if (fCorrect)
resultImage.setImageResource(R.drawable.correct_image);
else
resultImage.setImageResource(R.drawable.incorrect_image);
dialog.show();
new CountDownTimer(700, 100) {
public void onTick(long millisUntilFinished) {
}
public void onFinish() {
dialog.dismiss(); //this is line 36
}
}.start();
}
}
Wenn die GameActivity.java
manchmal, wenn ich gehen, um eine andere Tätigkeit im erhalte eine Fehlermeldung wie diese auf meinen post. Ich weiß nicht, wie dieses Problem zu lösen, das ist schwer zu Debuggen, da seiner seltenen Fehler, aber es existiert.
Diese Frage ist ein dupe, und die Antworten naiv, so zu helfen, andere, die stolpern, diese Frage, die beste Zusammenfassung der Lösungen, die ich bisher gefunden habe ist hier: androidresearch.wordpress.com/2013/05/10/...
Sie können nehmen Refference von Here
Sie können nehmen Refference von Here
InformationsquelleAutor Jakub Pomykała | 2013-10-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwendung einer try-Anweisung.
Ich vermute, es hat geholfen, durch die direkte Befestigung des OP 's problem/bug haben, Sie haben eine "echte" Lösung für dieses problem?
Die von @kalyan-pvs für mich gearbeitet.
Ich lief in das gleiche problem wie der poster zuvor, und die Antwort hat nicht funktioniert. Ich glaube, der poster, und mir begegnete ein anderes Szenario, in dem diese Bedingung war erfüllt, aber noch immer verursacht eine exception geworfen werden.
Siehe Kommentare java.lang.IllegalArgumentException: View not attached to window manager. Schlechte Idee, nur schlucken Ausnahmen wie diese.
InformationsquelleAutor
Viele Menschen können googeln dies so könnte ich meine 2p im:
Leider sind die Beispiele, wo Menschen sind mit isShowing() nicht gehen, um arbeiten wie diese können weiterhin true zurück, wenn der view getrennt ist (die Aktivität gegangen ist).
Wenn Sie faul sind, die anderen Poster Kommentar zu wickeln es in ein try {} ist auch die Arbeit im /am meisten/Situationen (obwohl es ein paar Fälle, in denen das system schließen und zu einer Ausnahme führen, in einer Kraft-schließen, dass Sie können nicht einen try {} - Runde, wie es geschieht in der android-code nicht von dir)
Die beste Lösung ist, schließen Sie die Dialogfelder, wenn Sie Ihre Tätigkeit beendet/schließt. Wenn Sie versuchen, um es zu schließen nach der Benutzer navigiert Weg, während dein async task ausgeführt wird (oder, das Telefon klingelt und es navigiert Weg für Sie) dann sind Sie gehen, um das ViewNotAttached Ausnahme.
beste Antwort, die jemals für diese Frage!
InformationsquelleAutor
Vor dem schließen prüfen, wie dies in
onDestroy()
oderonStop()
Methode..Sie sind einfach die Entlassung nicht prüfen, ob es angezeigt wird oder nichtif (null != pDialog && pDialog.isShowing()) { pDialog.dismiss(); }
-> Diese ausgelöstIllegalArgumentException: View not attached to window manager
Innerhalb
onPostExecute
meiner Asynctask, fragte ich mich, warum es beruhigt die Ausnahme ausgelöst hat.Vergessen Sie nicht, auf
super.onDestroy
odersuper.onPause
InformationsquelleAutor
TUN auf diese Weise
InformationsquelleAutor
Verwendung von try catch kann nicht sein, eine effiziente Möglichkeit, dieses problem zu lösen, kann als Ursache Speicherverlust;
für diese Frage nach dem Zusammenhang verwendet wird, wie param, so, bevor Sie über die code-dialog.entlassen können wir die Verwendung folgenden codes zu schützen:
auch eine andere Methode kann verwendet werden, um den patch dieser Absturz
in die Funktion onDestroy() der Aktivität, fügen Sie den code hinzu:
InformationsquelleAutor