Android在dialog.show()中崩溃



我正在使用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]  

有什么办法解决这个问题吗?

如果你在一个活动中(比如MyActivity),你可以创建对话框:

Dialog dialog = new Dialog(this);

或者如果您在Activity的内部类中:

Dialog dialog = new Dialog(MyActivity.this);

否则你可以试试getBaseContext()
你只需要确保你在UI线程中工作

如果您在dialog.show();上得到异常try context.dialog.show();

最新更新