2011-09-21 61 views
0

在我的应用程序中,我有一个威胁,从服务器加载一些图像。 下载完图像后,它们将显示在对话框中。 这是工作,但如果用户通过后退按钮离开屏幕,我的应用程序与此logcat的输出崩溃:对话框崩溃我的应用程序

09-21 09:54:14.553: ERROR/AndroidRuntime(486): android.view.WindowManager$BadTokenException: Unable to add window -- token [email protected] is not valid; is your activity running? 

应用程序正在运行,直到老年活动调用下面的代码(创建一个自定义对话框)。

我已经知道它崩溃了: 我在下载图像后调用Handler。在处理程序中,我执行以下操作:

 final Dialog dialog = new Dialog(Product.this); 
    dialog.setContentView(R.layout.imageview_inflator); 
    dialog.setTitle("Choose a Picture"); 
    dialog.setCancelable(true); 

    // set up image view 
    final ImageView img = (ImageView) dialog.findViewById(R.id.imageView); 
    img.setImageBitmap(ImageLoader.cache.get(pic_url[pictureCounter])); 


    dialog.show(); 

如何避免碰撞。我认为我应该以某种方式避免显示对话框,如果活动不是运行的。

+0

该代码存在错误。你忘了在'Choose a Picture'后面加上'''' – Behrang

+0

那是真的,但是这只是一个错字,我已经编辑了我的帖子 – tobias

+0

按下后退按钮,你在做什么 –

回答

1

当您离开活动时,您的错误bcoz正在运行,您的线程仍在运行,并且它正在调用您的处理程序以显示对话框,并且该对话框没有可以显示的活动。

您可以通过将对话代码放在try-catch内避免它,因为它会阻止您的应用程序崩溃。

+0

我正在尝试它! – tobias