Сбой Android в dialog.show () - PullRequest
       4

Сбой Android в dialog.show ()

5 голосов
/ 28 апреля 2011

Я создаю диалог, используя функцию getApplicationContext (), и это вызывает сбой программы при вызове dialog.show (). Я использую getApplicationContext (), потому что я пытаюсь открыть диалоговое окно в Camera.PictureCallback () следующим образом:

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();
    }
};

Вот журнал аварий:

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]  

Есть идеи как это исправить?

Ответы [ 2 ]

10 голосов
/ 28 апреля 2011

Если вы находитесь внутри действия (скажем, MyActivity), вы можете создать диалог:

Dialog dialog = new Dialog(this);

или если вы внутри внутреннего класса Activity:

Dialog dialog = new Dialog(MyActivity.this);

В противном случае вы можете попробовать getBaseContext().
Вы просто убедитесь, что работаете в потоке пользовательского интерфейса.

0 голосов
/ 28 апреля 2011

Если вы получаете исключение на dialog.show(); попробуйте context.dialog.show();

Если это не произойдет, проверьте и ваш контекст.

...