I'm getting a few reports in the Market of my users experiencing a
WindowManager$BadTokenException from an AlertBuilder.Builder.show()
call. (Full stack trace and relevant code below.) I've read what can
cause this to happen but no matter what I try, I can't cause the
exception to be thrown on any of my emulators or my Nexus One.

I've tried hitting the Back and Home buttons just as the dialog is
about to be displayed, changing the phone's orientation, and launching
multiple other apps in an attempt to get my app paused/resumed.

Anyone have any ideas on other actions I can take to try and cause the
exception?

Thanks,
Dave

Stack Trace:

android.view.WindowManager$BadTokenException: Unable to add window --
token android.os.BinderProxy@46042700 is not valid; is your activity
running?
at android.view.ViewRoot.setView(ViewRoot.java:509)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
at android.view.Window$LocalWindowManager.addView(Window.java:424)
at android.app.Dialog.show(Dialog.java:241)
at android.app.AlertDialog$Builder.show(AlertDialog.java:802)
at com.hoyski.androidsquares.Squares.showGameOverDialog(Squares.java:
556)
at com.hoyski.androidsquares.Squares.computerMoveOnce(Squares.java:
475)
at com.hoyski.androidsquares.Squares.run(Squares.java:666)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:144)
at android.app.ActivityThread.main(ActivityThread.java:4937)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit
$MethodAndArgsCaller.run(ZygoteInit.java:868)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
at dalvik.system.NativeStart.main(Native Method)


Relevant Code:

private void showGameOverDialog() {

        AlertDialog.Builder gameOverBldr = new AlertDialog.Builder(this);
        gameOverBldr.setPositiveButton("OK",
                new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                        dialog.cancel();
                }
        });

        String title = "Game Over";
        String msg = "... logic to build message snipped...";

        gameOverBldr.setTitle(title);
        gameOverBldr.setMessage(msg);

        gameOverBldr.show();
}

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to