Android crash in dialog.show ()

I create a dialog using the getApplicationContext () function, and this causes the program to crash when calling dialog.show (). I use getApplicationContext () because I am trying to make the dialog open in Camera.PictureCallback () as follows:

Camera.PictureCallback pictureCallbackJpeg = new Camera.PictureCallback() { public void onPictureTaken(byte[] data, Camera c) { Context context = getApplicationContext(); Dialog dialog = new Dialog(context); dialog.setContentView(R.layout.send_dialog); dialog.setTitle("Send image?"); dialog.show(); camera.startPreview(); } }; 

Here is the crash log:

 Thread [<1> main] (Suspended (exception WindowManager$BadTokenException)) Dialog.show() line: 245 myApp$1.onPictureTaken(byte[], Camera) line: 31 Camera$EventHandler.handleMessage(Message) line: 328 Camera$EventHandler(Handler).dispatchMessage(Message) line: 99 Looper.loop() line: 143 ActivityThread.main(String[]) line: 4914 Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method] Method.invoke(Object, Object...) line: 521 ZygoteInit$MethodAndArgsCaller.run() line: 868 ZygoteInit.main(String[]) line: 626 NativeStart.main(String[]) line: not available [native method] 

Any ideas how to fix this?

+4
source share
2 answers

If you are inside an action (say MyActivity ), you can create a dialog:

 Dialog dialog = new Dialog(this); 

or if you are inside the inner class Activity :

 Dialog dialog = new Dialog(MyActivity.this); 

Otherwise, you can try getBaseContext() .

You just make sure you work in the user interface thread.

+9
source

If you get an exception in dialog.show(); try context.dialog.show();

If persistence arises, also check your context.

-1
source

All Articles